Load data

Change factor levels to N, L M H E, etc

######  Chlorophyll
library(tidyverse)
Error in library(tidyverse) : there is no package called ‘tidyverse’

aggregate data by factor levels Find max, min, mean and sd for v and vel.flow

data %>% group_by(Light, Flow.rate, Chlorophyll, Guano) %>% summarise_at(vars(vel.turn.angle.smooth), funs(min, max, mean, sd))
Warning: `funs()` was deprecated in dplyr 0.8.0.
Please use a list of either functions or lambdas: 

  # Simple named list: 
  list(mean = mean, median = median)

  # Auto named with `tibble::lst()`: 
  tibble::lst(mean, median)

  # Using lambdas
  list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.

Circular stats for angle data Total angles

```r
## calculating variance of the vector from circular data
var(circ)

<!-- rnb-source-end -->

<!-- rnb-output-begin eyJkYXRhIjoiWzFdIE5BXG4ifQ== -->

[1] NA




<!-- rnb-output-end -->

<!-- rnb-chunk-end -->


<!-- rnb-text-begin -->


Sub-setting factors into separate data sets to calculate mean vectors and dispersion for angle data

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuIyMgU3Vic2V0IGVhY2ggY29sdW1uIChlYWNoIHRyZWF0bWVudCksIGFuZCBhc3NpZ24gYXMgY2lyY3VsYXIgZGF0YVxuIyNsaWJyYXJ5KGNpcmN1bGFyKVxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbiAgICMjICBMaWdodCBPbiwgTk8gRmxvd1xuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuTE5OPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxOTiA8LSBMTk5bTE5OJEZsb3cucmF0ZT09XCJObyBGbG93XCIsXVxuTE5OIDwtIExOTltMTk4kQ2hsb3JvcGh5bGw9PVwiTm8gQ2hsb3JvcGh5bGxcIixdXG5MTk4gPC0gTE5OW0xOTiRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxOTDwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MTkwgPC0gTE5MW0xOTCRGbG93LnJhdGU9PVwiTm8gRmxvd1wiLF1cbkxOTCA8LSBMTkxbTE5MJENobG9yb3BoeWxsPT1cIkxvdyBDaGxvcm9waHlsbFwiLF1cbkxOTCA8LSBMTkxbTE5MJEd1YW5vPT1cIkFic2VudFwiLF1cblxuTE5NPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxOTSA8LSBMTk1bTE5NJEZsb3cucmF0ZT09XCJObyBGbG93XCIsXVxuTE5NIDwtIExOTVtMTk0kQ2hsb3JvcGh5bGw9PVwiTWVkaXVtIENobG9yb3BoeWxsXCIsXVxuTE5NIDwtIExOTVtMTk0kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5MTkg8LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTE5IIDwtIExOSFtMTkgkRmxvdy5yYXRlPT1cIk5vIEZsb3dcIixdXG5MTkggPC0gTE5IW0xOSCRDaGxvcm9waHlsbD09XCJIaWdoIENobG9yb3BoeWxsXCIsXVxuTE5IIDwtIExOSFtMTkgkR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5MTkc8LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTE5HIDwtIExOR1tMTkckRmxvdy5yYXRlPT1cIk5vIEZsb3dcIixdXG5MTkcgPC0gTE5HW0xORyRDaGxvcm9waHlsbD09XCJObyBDaGxvcm9waHlsbFwiLF1cbkxORyA8LSBMTkdbTE5HJEd1YW5vPT1cIlByZXNlbnRcIixdXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4jIyAgICBMaWdodHMgT24sIExvdyBGbG93XG5cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG5MTE48LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTExOIDwtIExMTltMTE4kRmxvdy5yYXRlPT1cIkxvdyBGbG93XCIsXVxuTExOIDwtIExMTltMTE4kQ2hsb3JvcGh5bGw9PVwiTm8gQ2hsb3JvcGh5bGxcIixdXG5MTE4gPC0gTExOW0xMTiRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxMTDwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MTEwgPC0gTExMW0xMTCRGbG93LnJhdGU9PVwiTG93IEZsb3dcIixdXG5MTEwgPC0gTExMW0xMTCRDaGxvcm9waHlsbD09XCJMb3cgQ2hsb3JvcGh5bGxcIixdXG5MTEwgPC0gTExMW0xMTCRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxMTTwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MTE0gPC0gTExNW0xMTSRGbG93LnJhdGU9PVwiTG93IEZsb3dcIixdXG5MTE0gPC0gTExNW0xMTSRDaGxvcm9waHlsbD09XCJNZWRpdW0gQ2hsb3JvcGh5bGxcIixdXG5MTE0gPC0gTExNW0xMTSRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxMSDwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MTEggPC0gTExIW0xMSCRGbG93LnJhdGU9PVwiTG93IEZsb3dcIixdXG5MTEggPC0gTExIW0xMSCRDaGxvcm9waHlsbD09XCJIaWdoIENobG9yb3BoeWxsXCIsXVxuTExIIDwtIExMSFtMTEgkR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5MTEc8LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTExHIDwtIExMR1tMTEckRmxvdy5yYXRlPT1cIkxvdyBGbG93XCIsXVxuTExHIDwtIExMR1tMTEckQ2hsb3JvcGh5bGw9PVwiTm8gQ2hsb3JvcGh5bGxcIixdXG5MTEcgPC0gTExHW0xMRyRHdWFubz09XCJQcmVzZW50XCIsXVxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbiMjICAgIExpZ2h0IE9uLCBNZWRpdW0gRmxvd1xuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbkxNTjwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MTU4gPC0gTE1OW0xNTiRGbG93LnJhdGU9PVwiTWVkaXVtIEZsb3dcIixdXG5MTU4gPC0gTE1OW0xNTiRDaGxvcm9waHlsbD09XCJObyBDaGxvcm9waHlsbFwiLF1cbkxNTiA8LSBMTU5bTE1OJEd1YW5vPT1cIkFic2VudFwiLF1cblxuTE1MPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxNTCA8LSBMTUxbTE1MJEZsb3cucmF0ZT09XCJNZWRpdW0gRmxvd1wiLF1cbkxNTCA8LSBMTUxbTE1MJENobG9yb3BoeWxsPT1cIkxvdyBDaGxvcm9waHlsbFwiLF1cbkxNTCA8LSBMTUxbTE1MJEd1YW5vPT1cIkFic2VudFwiLF1cblxuTE1NPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxNTSA8LSBMTU1bTE1NJEZsb3cucmF0ZT09XCJNZWRpdW0gRmxvd1wiLF1cbkxNTSA8LSBMTU1bTE1NJENobG9yb3BoeWxsPT1cIk1lZGl1bSBDaGxvcm9waHlsbFwiLF1cbkxNTSA8LSBMTU1bTE1NJEd1YW5vPT1cIkFic2VudFwiLF1cblxuTE1IPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxNSCA8LSBMTUhbTE1IJEZsb3cucmF0ZT09XCJNZWRpdW0gRmxvd1wiLF1cbkxNSCA8LSBMTUhbTE1IJENobG9yb3BoeWxsPT1cIkhpZ2ggQ2hsb3JvcGh5bGxcIixdXG5MTUggPC0gTE1IW0xNSCRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxNRzwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MTUcgPC0gTE1HW0xNRyRGbG93LnJhdGU9PVwiTWVkaXVtIEZsb3dcIixdXG5MTUcgPC0gTE1HW0xNRyRDaGxvcm9waHlsbD09XCJObyBDaGxvcm9waHlsbFwiLF1cbkxNRyA8LSBMTUdbTE1HJEd1YW5vPT1cIlByZXNlbnRcIixdXG5cbkxNQyA8LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTE1DIDwtIExNQ1tMTUMkRmxvdy5yYXRlPT1cIk1lZGl1bSBGbG93XCIsXVxuTE1DIDwtIExNQ1tMTUMkQ2hsb3JvcGh5bGw9PVwiTG93IENobG9yb3BoeWxsXCIsXVxuTE1DIDwtIExNQ1tMTUMkR3Vhbm89PVwiUHJlc2VudFwiLF1cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuIyMjICAgIExpZ2h0IE9uLCBIaWdoIEZsb3dcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuTEhOPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxITiA8LSBMSE5bTEhOJEZsb3cucmF0ZT09XCJIaWdoIEZsb3dcIixdXG5MSE4gPC0gTEhOW0xITiRDaGxvcm9waHlsbD09XCJObyBDaGxvcm9waHlsbFwiLF1cbkxITiA8LSBMSE5bTEhOJEd1YW5vPT1cIkFic2VudFwiLF1cblxuTEhMPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxITCA8LSBMSExbTEhMJEZsb3cucmF0ZT09XCJIaWdoIEZsb3dcIixdXG5MSEwgPC0gTEhMW0xITCRDaGxvcm9waHlsbD09XCJMb3cgQ2hsb3JvcGh5bGxcIixdXG5MSEwgPC0gTEhMW0xITCRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxITTwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MSE0gPC0gTEhNW0xITSRGbG93LnJhdGU9PVwiSGlnaCBGbG93XCIsXVxuTEhNIDwtIExITVtMSE0kQ2hsb3JvcGh5bGw9PVwiTWVkaXVtIENobG9yb3BoeWxsXCIsXVxuTEhNIDwtIExITVtMSE0kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5MSEg8LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTEhIIDwtIExISFtMSEgkRmxvdy5yYXRlPT1cIkhpZ2ggRmxvd1wiLF1cbkxISCA8LSBMSEhbTEhIJENobG9yb3BoeWxsPT1cIkhpZ2ggQ2hsb3JvcGh5bGxcIixdXG5MSEggPC0gTEhIW0xISCRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxIRzwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MSEcgPC0gTEhHW0xIRyRGbG93LnJhdGU9PVwiSGlnaCBGbG93XCIsXVxuTEhHIDwtIExIR1tMSEckQ2hsb3JvcGh5bGw9PVwiTm8gQ2hsb3JvcGh5bGxcIixdXG5MSEcgPC0gTEhHW0xIRyRHdWFubz09XCJQcmVzZW50XCIsXVxuXG5cbkxIQzwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MSEMgPC0gTEhDW0xIQyRGbG93LnJhdGU9PVwiSGlnaCBGbG93XCIsXVxuTEhDIDwtIExIQ1tMSEMkQ2hsb3JvcGh5bGw9PVwiTG93IENobG9yb3BoeWxsXCIsXVxuTEhDIDwtIExIQ1tMSEMkR3Vhbm89PVwiUHJlc2VudFwiLF1cblxuXG5cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuXG4jIyMgICAgTGlnaHQgT24sIEV4dHJlbWUgRmxvd1xuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG5MRU48LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTEVOIDwtIExFTltMRU4kRmxvdy5yYXRlPT1cIkV4dHJlbWUgRmxvd1wiLF1cbkxFTiA8LSBMRU5bTEVOJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuTEVOIDwtIExFTltMRU4kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5MRUw8LWRhdGFbZGF0YSRMaWdodD09XCJQcmVzZW50XCIsXVxuTEVMIDwtIExFTFtMRUwkRmxvdy5yYXRlPT1cIkV4dHJlbWUgRmxvd1wiLF1cbkxFTCA8LSBMRUxbTEVMJENobG9yb3BoeWxsPT1cIkxvdyBDaGxvcm9waHlsbFwiLF1cbkxFTCA8LSBMRUxbTEVMJEd1YW5vPT1cIkFic2VudFwiLF1cblxuTEVNPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxFTSA8LSBMRU1bTEVNJEZsb3cucmF0ZT09XCJFeHRyZW1lIEZsb3dcIixdXG5MRU0gPC0gTEVNW0xFTSRDaGxvcm9waHlsbD09XCJNZWRpdW0gQ2hsb3JvcGh5bGxcIixdXG5MRU0gPC0gTEVNW0xFTSRHdWFubz09XCJBYnNlbnRcIixdXG5cbkxFSDwtZGF0YVtkYXRhJExpZ2h0PT1cIlByZXNlbnRcIixdXG5MRUggPC0gTEVIW0xFSCRGbG93LnJhdGU9PVwiRXh0cmVtZSBGbG93XCIsXVxuTEVIIDwtIExFSFtMRUgkQ2hsb3JvcGh5bGw9PVwiSGlnaCBDaGxvcm9waHlsbFwiLF1cbkxFSCA8LSBMRUhbTEVIJEd1YW5vPT1cIkFic2VudFwiLF1cblxuTEVHPC1kYXRhW2RhdGEkTGlnaHQ9PVwiUHJlc2VudFwiLF1cbkxFRyA8LSBMRUdbTEVHJEZsb3cucmF0ZT09XCJFeHRyZW1lIEZsb3dcIixdXG5MRUcgPC0gTEVHW0xFRyRDaGxvcm9waHlsbD09XCJObyBDaGxvcm9waHlsbFwiLF1cbkxFRyA8LSBMRUdbTEVHJEd1YW5vPT1cIlByZXNlbnRcIixdXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4gICAjIyAgTGlnaHQgT2ZmLCBOTyBGbG93XG5cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbkROTjwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkROTiA8LSBETk5bRE5OJEZsb3cucmF0ZT09XCJObyBGbG93XCIsXVxuRE5OIDwtIEROTltETk4kQ2hsb3JvcGh5bGw9PVwiTm8gQ2hsb3JvcGh5bGxcIixdXG5ETk4gPC0gRE5OW0ROTiRHdWFubz09XCJBYnNlbnRcIixdXG5cbkROTDwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkROTCA8LSBETkxbRE5MJEZsb3cucmF0ZT09XCJObyBGbG93XCIsXVxuRE5MIDwtIEROTFtETkwkQ2hsb3JvcGh5bGw9PVwiTG93IENobG9yb3BoeWxsXCIsXVxuRE5MIDwtIEROTFtETkwkR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ETk08LWRhdGFbZGF0YSRMaWdodD09XCJBYnNlbnRcIixdXG5ETk0gPC0gRE5NW0ROTSRGbG93LnJhdGU9PVwiTm8gRmxvd1wiLF1cbkROTSA8LSBETk1bRE5NJENobG9yb3BoeWxsPT1cIk1lZGl1bSBDaGxvcm9waHlsbFwiLF1cbkROTSA8LSBETk1bRE5NJEd1YW5vPT1cIkFic2VudFwiLF1cblxuRE5IIDwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkROSCA8LSBETkhbRE5IJEZsb3cucmF0ZT09XCJObyBGbG93XCIsXVxuRE5IIDwtIEROSFtETkgkQ2hsb3JvcGh5bGw9PVwiSGlnaCBDaGxvcm9waHlsbFwiLF1cbkROSCA8LSBETkhbRE5IJEd1YW5vPT1cIkFic2VudFwiLF1cblxuRE5HPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuRE5HIDwtIEROR1tETkckRmxvdy5yYXRlPT1cIk5vIEZsb3dcIixdXG5ETkcgPC0gRE5HW0RORyRDaGxvcm9waHlsbD09XCJObyBDaGxvcm9waHlsbFwiLF1cbkRORyA8LSBETkdbRE5HJEd1YW5vPT1cIlByZXNlbnRcIixdXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4jIyAgICBMaWdodHMgT2ZmLCBMb3cgRmxvd1xuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuRExOIDwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkRMTiA8LSBETE5bRExOJEZsb3cucmF0ZT09XCJMb3cgRmxvd1wiLF1cbkRMTiA8LSBETE5bRExOJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuRExOIDwtIERMTltETE4kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ETEwgPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuRExMIDwtIERMTFtETEwkRmxvdy5yYXRlPT1cIkxvdyBGbG93XCIsXVxuRExMIDwtIERMTFtETEwkQ2hsb3JvcGh5bGw9PVwiTG93IENobG9yb3BoeWxsXCIsXVxuRExMIDwtIERMTFtETEwkR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ETE0gPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuRExNIDwtIERMTVtETE0kRmxvdy5yYXRlPT1cIkxvdyBGbG93XCIsXVxuRExNIDwtIERMTVtETE0kQ2hsb3JvcGh5bGw9PVwiTWVkaXVtIENobG9yb3BoeWxsXCIsXVxuRExNIDwtIERMTVtETE0kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ETEggPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuRExIIDwtIERMSFtETEgkRmxvdy5yYXRlPT1cIkxvdyBGbG93XCIsXVxuRExIIDwtIERMSFtETEgkQ2hsb3JvcGh5bGw9PVwiSGlnaCBDaGxvcm9waHlsbFwiLF1cbkRMSCA8LSBETEhbRExIJEd1YW5vPT1cIkFic2VudFwiLF1cblxuRExHIDwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkRMRyA8LSBETEdbRExHJEZsb3cucmF0ZT09XCJMb3cgRmxvd1wiLF1cbkRMRyA8LSBETEdbRExHJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuRExHIDwtIERMR1tETEckR3Vhbm89PVwiUHJlc2VudFwiLF1cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4jIyAgICBMaWdodCBPZmYsIE1lZGl1bSBGbG93XG5cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuRE1OIDwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkRNTiA8LSBETU5bRE1OJEZsb3cucmF0ZT09XCJNZWRpdW0gRmxvd1wiLF1cbkRNTiA8LSBETU5bRE1OJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuRE1OIDwtIERNTltETU4kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ETUwgPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuRE1MIDwtIERNTFtETUwkRmxvdy5yYXRlPT1cIk1lZGl1bSBGbG93XCIsXVxuRE1MIDwtIERNTFtETUwkQ2hsb3JvcGh5bGw9PVwiTG93IENobG9yb3BoeWxsXCIsXVxuRE1MIDwtIERNTFtETUwkR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ETU0gPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuRE1NIDwtIERNTVtETU0kRmxvdy5yYXRlPT1cIk1lZGl1bSBGbG93XCIsXVxuRE1NIDwtIERNTVtETU0kQ2hsb3JvcGh5bGw9PVwiTWVkaXVtIENobG9yb3BoeWxsXCIsXVxuRE1NIDwtIERNTVtETU0kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ETUggPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuRE1IIDwtIERNSFtETUgkRmxvdy5yYXRlPT1cIk1lZGl1bSBGbG93XCIsXVxuRE1IIDwtIERNSFtETUgkQ2hsb3JvcGh5bGw9PVwiSGlnaCBDaGxvcm9waHlsbFwiLF1cbkRNSCA8LSBETUhbRE1IJEd1YW5vPT1cIkFic2VudFwiLF1cblxuRE1HIDwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkRNRyA8LSBETUdbRE1HJEZsb3cucmF0ZT09XCJNZWRpdW0gRmxvd1wiLF1cbkRNRyA8LSBETUdbRE1HJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuRE1HIDwtIERNR1tETUckR3Vhbm89PVwiUHJlc2VudFwiLF1cblxuRE1DIDwtZGF0YVtkYXRhJExpZ2h0PT1cIkFic2VudFwiLF1cbkRNQyA8LSBETUNbRE1DJEZsb3cucmF0ZT09XCJNZWRpdW0gRmxvd1wiLF1cbkRNQyA8LSBETUNbRE1DJENobG9yb3BoeWxsPT1cIkxvdyBDaGxvcm9waHlsbFwiLF1cbkRNQyA8LSBETUNbRE1DJEd1YW5vPT1cIlByZXNlbnRcIixdXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbiMjIyAgICBMaWdodCBPZmYsIEhpZ2ggRmxvd1xuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuREhOPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuREhOIDwtIERITltESE4kRmxvdy5yYXRlPT1cIkhpZ2ggRmxvd1wiLF1cbkRITiA8LSBESE5bREhOJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuREhOIDwtIERITltESE4kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ESEw8LWRhdGFbZGF0YSRMaWdodD09XCJBYnNlbnRcIixdXG5ESEwgPC0gREhMW0RITCRGbG93LnJhdGU9PVwiSGlnaCBGbG93XCIsXVxuREhMIDwtIERITFtESEwkQ2hsb3JvcGh5bGw9PVwiTG93IENobG9yb3BoeWxsXCIsXVxuREhMIDwtIERITFtESEwkR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ESE08LWRhdGFbZGF0YSRMaWdodD09XCJBYnNlbnRcIixdXG5ESE0gPC0gREhNW0RITSRGbG93LnJhdGU9PVwiSGlnaCBGbG93XCIsXVxuREhNIDwtIERITVtESE0kQ2hsb3JvcGh5bGw9PVwiTWVkaXVtIENobG9yb3BoeWxsXCIsXVxuREhNIDwtIERITVtESE0kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ESEg8LWRhdGFbZGF0YSRMaWdodD09XCJBYnNlbnRcIixdXG5ESEggPC0gREhIW0RISCRGbG93LnJhdGU9PVwiSGlnaCBGbG93XCIsXVxuREhIIDwtIERISFtESEgkQ2hsb3JvcGh5bGw9PVwiSGlnaCBDaGxvcm9waHlsbFwiLF1cbkRISCA8LSBESEhbREhIJEd1YW5vPT1cIkFic2VudFwiLF1cblxuREhHPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuREhHIDwtIERIR1tESEckRmxvdy5yYXRlPT1cIkhpZ2ggRmxvd1wiLF1cbkRIRyA8LSBESEdbREhHJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuREhHIDwtIERIR1tESEckR3Vhbm89PVwiUHJlc2VudFwiLF1cblxuREhDPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuREhDIDwtIERIQ1tESEMkRmxvdy5yYXRlPT1cIkhpZ2ggRmxvd1wiLF1cbkRIQyA8LSBESENbREhDJENobG9yb3BoeWxsPT1cIkxvdyBDaGxvcm9waHlsbFwiLF1cbkRIQyA8LSBESENbREhDJEd1YW5vPT1cIlByZXNlbnRcIixdXG5cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuXG4jIyMgICAgTGlnaHQgT2ZmLCBFeHRyZW1lIEZsb3dcblxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuREVOPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuREVOIDwtIERFTltERU4kRmxvdy5yYXRlPT1cIkV4dHJlbWUgRmxvd1wiLF1cbkRFTiA8LSBERU5bREVOJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuREVOIDwtIERFTltERU4kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ERUw8LWRhdGFbZGF0YSRMaWdodD09XCJBYnNlbnRcIixdXG5ERUwgPC0gREVMW0RFTCRGbG93LnJhdGU9PVwiRXh0cmVtZSBGbG93XCIsXVxuREVMIDwtIERFTFtERUwkQ2hsb3JvcGh5bGw9PVwiTG93IENobG9yb3BoeWxsXCIsXVxuREVMIDwtIERFTFtERUwkR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ERU08LWRhdGFbZGF0YSRMaWdodD09XCJBYnNlbnRcIixdXG5ERU0gPC0gREVNW0RFTSRGbG93LnJhdGU9PVwiRXh0cmVtZSBGbG93XCIsXVxuREVNIDwtIERFTVtERU0kQ2hsb3JvcGh5bGw9PVwiTWVkaXVtIENobG9yb3BoeWxsXCIsXVxuREVNIDwtIERFTVtERU0kR3Vhbm89PVwiQWJzZW50XCIsXVxuXG5ERUg8LWRhdGFbZGF0YSRMaWdodD09XCJBYnNlbnRcIixdXG5ERUggPC0gREVIW0RFSCRGbG93LnJhdGU9PVwiRXh0cmVtZSBGbG93XCIsXVxuREVIIDwtIERFSFtERUgkQ2hsb3JvcGh5bGw9PVwiSGlnaCBDaGxvcm9waHlsbFwiLF1cbkRFSCA8LSBERUhbREVIJEd1YW5vPT1cIkFic2VudFwiLF1cblxuREVHPC1kYXRhW2RhdGEkTGlnaHQ9PVwiQWJzZW50XCIsXVxuREVHIDwtIERFR1tERUckRmxvdy5yYXRlPT1cIkV4dHJlbWUgRmxvd1wiLF1cbkRFRyA8LSBERUdbREVHJENobG9yb3BoeWxsPT1cIk5vIENobG9yb3BoeWxsXCIsXVxuREVHIDwtIERFR1tERUckR3Vhbm89PVwiUHJlc2VudFwiLF1cbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuXG5cbmBgYCJ9 -->

```r
## Subset each column (each treatment), and assign as circular data
##library(circular)
#####################################################################

   ##  Light On, NO Flow

####################################################################
LNN<-data[data$Light=="Present",]
LNN <- LNN[LNN$Flow.rate=="No Flow",]
LNN <- LNN[LNN$Chlorophyll=="No Chlorophyll",]
LNN <- LNN[LNN$Guano=="Absent",]

LNL<-data[data$Light=="Present",]
LNL <- LNL[LNL$Flow.rate=="No Flow",]
LNL <- LNL[LNL$Chlorophyll=="Low Chlorophyll",]
LNL <- LNL[LNL$Guano=="Absent",]

LNM<-data[data$Light=="Present",]
LNM <- LNM[LNM$Flow.rate=="No Flow",]
LNM <- LNM[LNM$Chlorophyll=="Medium Chlorophyll",]
LNM <- LNM[LNM$Guano=="Absent",]

LNH<-data[data$Light=="Present",]
LNH <- LNH[LNH$Flow.rate=="No Flow",]
LNH <- LNH[LNH$Chlorophyll=="High Chlorophyll",]
LNH <- LNH[LNH$Guano=="Absent",]

LNG<-data[data$Light=="Present",]
LNG <- LNG[LNG$Flow.rate=="No Flow",]
LNG <- LNG[LNG$Chlorophyll=="No Chlorophyll",]
LNG <- LNG[LNG$Guano=="Present",]
##############################################################

##    Lights On, Low Flow

###############################################################

LLN<-data[data$Light=="Present",]
LLN <- LLN[LLN$Flow.rate=="Low Flow",]
LLN <- LLN[LLN$Chlorophyll=="No Chlorophyll",]
LLN <- LLN[LLN$Guano=="Absent",]

LLL<-data[data$Light=="Present",]
LLL <- LLL[LLL$Flow.rate=="Low Flow",]
LLL <- LLL[LLL$Chlorophyll=="Low Chlorophyll",]
LLL <- LLL[LLL$Guano=="Absent",]

LLM<-data[data$Light=="Present",]
LLM <- LLM[LLM$Flow.rate=="Low Flow",]
LLM <- LLM[LLM$Chlorophyll=="Medium Chlorophyll",]
LLM <- LLM[LLM$Guano=="Absent",]

LLH<-data[data$Light=="Present",]
LLH <- LLH[LLH$Flow.rate=="Low Flow",]
LLH <- LLH[LLH$Chlorophyll=="High Chlorophyll",]
LLH <- LLH[LLH$Guano=="Absent",]

LLG<-data[data$Light=="Present",]
LLG <- LLG[LLG$Flow.rate=="Low Flow",]
LLG <- LLG[LLG$Chlorophyll=="No Chlorophyll",]
LLG <- LLG[LLG$Guano=="Present",]
#####################################################################

##    Light On, Medium Flow

######################################################################

LMN<-data[data$Light=="Present",]
LMN <- LMN[LMN$Flow.rate=="Medium Flow",]
LMN <- LMN[LMN$Chlorophyll=="No Chlorophyll",]
LMN <- LMN[LMN$Guano=="Absent",]

LML<-data[data$Light=="Present",]
LML <- LML[LML$Flow.rate=="Medium Flow",]
LML <- LML[LML$Chlorophyll=="Low Chlorophyll",]
LML <- LML[LML$Guano=="Absent",]

LMM<-data[data$Light=="Present",]
LMM <- LMM[LMM$Flow.rate=="Medium Flow",]
LMM <- LMM[LMM$Chlorophyll=="Medium Chlorophyll",]
LMM <- LMM[LMM$Guano=="Absent",]

LMH<-data[data$Light=="Present",]
LMH <- LMH[LMH$Flow.rate=="Medium Flow",]
LMH <- LMH[LMH$Chlorophyll=="High Chlorophyll",]
LMH <- LMH[LMH$Guano=="Absent",]

LMG<-data[data$Light=="Present",]
LMG <- LMG[LMG$Flow.rate=="Medium Flow",]
LMG <- LMG[LMG$Chlorophyll=="No Chlorophyll",]
LMG <- LMG[LMG$Guano=="Present",]

LMC <-data[data$Light=="Present",]
LMC <- LMC[LMC$Flow.rate=="Medium Flow",]
LMC <- LMC[LMC$Chlorophyll=="Low Chlorophyll",]
LMC <- LMC[LMC$Guano=="Present",]
################################################################

###    Light On, High Flow

####################################################################

LHN<-data[data$Light=="Present",]
LHN <- LHN[LHN$Flow.rate=="High Flow",]
LHN <- LHN[LHN$Chlorophyll=="No Chlorophyll",]
LHN <- LHN[LHN$Guano=="Absent",]

LHL<-data[data$Light=="Present",]
LHL <- LHL[LHL$Flow.rate=="High Flow",]
LHL <- LHL[LHL$Chlorophyll=="Low Chlorophyll",]
LHL <- LHL[LHL$Guano=="Absent",]

LHM<-data[data$Light=="Present",]
LHM <- LHM[LHM$Flow.rate=="High Flow",]
LHM <- LHM[LHM$Chlorophyll=="Medium Chlorophyll",]
LHM <- LHM[LHM$Guano=="Absent",]

LHH<-data[data$Light=="Present",]
LHH <- LHH[LHH$Flow.rate=="High Flow",]
LHH <- LHH[LHH$Chlorophyll=="High Chlorophyll",]
LHH <- LHH[LHH$Guano=="Absent",]

LHG<-data[data$Light=="Present",]
LHG <- LHG[LHG$Flow.rate=="High Flow",]
LHG <- LHG[LHG$Chlorophyll=="No Chlorophyll",]
LHG <- LHG[LHG$Guano=="Present",]


LHC<-data[data$Light=="Present",]
LHC <- LHC[LHC$Flow.rate=="High Flow",]
LHC <- LHC[LHC$Chlorophyll=="Low Chlorophyll",]
LHC <- LHC[LHC$Guano=="Present",]



################################################################


###    Light On, Extreme Flow

####################################################################

LEN<-data[data$Light=="Present",]
LEN <- LEN[LEN$Flow.rate=="Extreme Flow",]
LEN <- LEN[LEN$Chlorophyll=="No Chlorophyll",]
LEN <- LEN[LEN$Guano=="Absent",]

LEL<-data[data$Light=="Present",]
LEL <- LEL[LEL$Flow.rate=="Extreme Flow",]
LEL <- LEL[LEL$Chlorophyll=="Low Chlorophyll",]
LEL <- LEL[LEL$Guano=="Absent",]

LEM<-data[data$Light=="Present",]
LEM <- LEM[LEM$Flow.rate=="Extreme Flow",]
LEM <- LEM[LEM$Chlorophyll=="Medium Chlorophyll",]
LEM <- LEM[LEM$Guano=="Absent",]

LEH<-data[data$Light=="Present",]
LEH <- LEH[LEH$Flow.rate=="Extreme Flow",]
LEH <- LEH[LEH$Chlorophyll=="High Chlorophyll",]
LEH <- LEH[LEH$Guano=="Absent",]

LEG<-data[data$Light=="Present",]
LEG <- LEG[LEG$Flow.rate=="Extreme Flow",]
LEG <- LEG[LEG$Chlorophyll=="No Chlorophyll",]
LEG <- LEG[LEG$Guano=="Present",]
################################################################

#####################################################################

   ##  Light Off, NO Flow

####################################################################

DNN<-data[data$Light=="Absent",]
DNN <- DNN[DNN$Flow.rate=="No Flow",]
DNN <- DNN[DNN$Chlorophyll=="No Chlorophyll",]
DNN <- DNN[DNN$Guano=="Absent",]

DNL<-data[data$Light=="Absent",]
DNL <- DNL[DNL$Flow.rate=="No Flow",]
DNL <- DNL[DNL$Chlorophyll=="Low Chlorophyll",]
DNL <- DNL[DNL$Guano=="Absent",]

DNM<-data[data$Light=="Absent",]
DNM <- DNM[DNM$Flow.rate=="No Flow",]
DNM <- DNM[DNM$Chlorophyll=="Medium Chlorophyll",]
DNM <- DNM[DNM$Guano=="Absent",]

DNH <-data[data$Light=="Absent",]
DNH <- DNH[DNH$Flow.rate=="No Flow",]
DNH <- DNH[DNH$Chlorophyll=="High Chlorophyll",]
DNH <- DNH[DNH$Guano=="Absent",]

DNG<-data[data$Light=="Absent",]
DNG <- DNG[DNG$Flow.rate=="No Flow",]
DNG <- DNG[DNG$Chlorophyll=="No Chlorophyll",]
DNG <- DNG[DNG$Guano=="Present",]
##############################################################

##    Lights Off, Low Flow

###############################################################

DLN <-data[data$Light=="Absent",]
DLN <- DLN[DLN$Flow.rate=="Low Flow",]
DLN <- DLN[DLN$Chlorophyll=="No Chlorophyll",]
DLN <- DLN[DLN$Guano=="Absent",]

DLL <-data[data$Light=="Absent",]
DLL <- DLL[DLL$Flow.rate=="Low Flow",]
DLL <- DLL[DLL$Chlorophyll=="Low Chlorophyll",]
DLL <- DLL[DLL$Guano=="Absent",]

DLM <-data[data$Light=="Absent",]
DLM <- DLM[DLM$Flow.rate=="Low Flow",]
DLM <- DLM[DLM$Chlorophyll=="Medium Chlorophyll",]
DLM <- DLM[DLM$Guano=="Absent",]

DLH <-data[data$Light=="Absent",]
DLH <- DLH[DLH$Flow.rate=="Low Flow",]
DLH <- DLH[DLH$Chlorophyll=="High Chlorophyll",]
DLH <- DLH[DLH$Guano=="Absent",]

DLG <-data[data$Light=="Absent",]
DLG <- DLG[DLG$Flow.rate=="Low Flow",]
DLG <- DLG[DLG$Chlorophyll=="No Chlorophyll",]
DLG <- DLG[DLG$Guano=="Present",]
#####################################################################

##    Light Off, Medium Flow

######################################################################

DMN <-data[data$Light=="Absent",]
DMN <- DMN[DMN$Flow.rate=="Medium Flow",]
DMN <- DMN[DMN$Chlorophyll=="No Chlorophyll",]
DMN <- DMN[DMN$Guano=="Absent",]

DML <-data[data$Light=="Absent",]
DML <- DML[DML$Flow.rate=="Medium Flow",]
DML <- DML[DML$Chlorophyll=="Low Chlorophyll",]
DML <- DML[DML$Guano=="Absent",]

DMM <-data[data$Light=="Absent",]
DMM <- DMM[DMM$Flow.rate=="Medium Flow",]
DMM <- DMM[DMM$Chlorophyll=="Medium Chlorophyll",]
DMM <- DMM[DMM$Guano=="Absent",]

DMH <-data[data$Light=="Absent",]
DMH <- DMH[DMH$Flow.rate=="Medium Flow",]
DMH <- DMH[DMH$Chlorophyll=="High Chlorophyll",]
DMH <- DMH[DMH$Guano=="Absent",]

DMG <-data[data$Light=="Absent",]
DMG <- DMG[DMG$Flow.rate=="Medium Flow",]
DMG <- DMG[DMG$Chlorophyll=="No Chlorophyll",]
DMG <- DMG[DMG$Guano=="Present",]

DMC <-data[data$Light=="Absent",]
DMC <- DMC[DMC$Flow.rate=="Medium Flow",]
DMC <- DMC[DMC$Chlorophyll=="Low Chlorophyll",]
DMC <- DMC[DMC$Guano=="Present",]
################################################################

###    Light Off, High Flow

####################################################################
DHN<-data[data$Light=="Absent",]
DHN <- DHN[DHN$Flow.rate=="High Flow",]
DHN <- DHN[DHN$Chlorophyll=="No Chlorophyll",]
DHN <- DHN[DHN$Guano=="Absent",]

DHL<-data[data$Light=="Absent",]
DHL <- DHL[DHL$Flow.rate=="High Flow",]
DHL <- DHL[DHL$Chlorophyll=="Low Chlorophyll",]
DHL <- DHL[DHL$Guano=="Absent",]

DHM<-data[data$Light=="Absent",]
DHM <- DHM[DHM$Flow.rate=="High Flow",]
DHM <- DHM[DHM$Chlorophyll=="Medium Chlorophyll",]
DHM <- DHM[DHM$Guano=="Absent",]

DHH<-data[data$Light=="Absent",]
DHH <- DHH[DHH$Flow.rate=="High Flow",]
DHH <- DHH[DHH$Chlorophyll=="High Chlorophyll",]
DHH <- DHH[DHH$Guano=="Absent",]

DHG<-data[data$Light=="Absent",]
DHG <- DHG[DHG$Flow.rate=="High Flow",]
DHG <- DHG[DHG$Chlorophyll=="No Chlorophyll",]
DHG <- DHG[DHG$Guano=="Present",]

DHC<-data[data$Light=="Absent",]
DHC <- DHC[DHC$Flow.rate=="High Flow",]
DHC <- DHC[DHC$Chlorophyll=="Low Chlorophyll",]
DHC <- DHC[DHC$Guano=="Present",]

################################################################


###    Light Off, Extreme Flow

####################################################################

DEN<-data[data$Light=="Absent",]
DEN <- DEN[DEN$Flow.rate=="Extreme Flow",]
DEN <- DEN[DEN$Chlorophyll=="No Chlorophyll",]
DEN <- DEN[DEN$Guano=="Absent",]

DEL<-data[data$Light=="Absent",]
DEL <- DEL[DEL$Flow.rate=="Extreme Flow",]
DEL <- DEL[DEL$Chlorophyll=="Low Chlorophyll",]
DEL <- DEL[DEL$Guano=="Absent",]

DEM<-data[data$Light=="Absent",]
DEM <- DEM[DEM$Flow.rate=="Extreme Flow",]
DEM <- DEM[DEM$Chlorophyll=="Medium Chlorophyll",]
DEM <- DEM[DEM$Guano=="Absent",]

DEH<-data[data$Light=="Absent",]
DEH <- DEH[DEH$Flow.rate=="Extreme Flow",]
DEH <- DEH[DEH$Chlorophyll=="High Chlorophyll",]
DEH <- DEH[DEH$Guano=="Absent",]

DEG<-data[data$Light=="Absent",]
DEG <- DEG[DEG$Flow.rate=="Extreme Flow",]
DEG <- DEG[DEG$Chlorophyll=="No Chlorophyll",]
DEG <- DEG[DEG$Guano=="Present",]
################################################################
  ### setting data as circular
##   Lights on

LNN <- circular(LNN$turn.angle, units="degrees", template="geographics") #assign LNN subset to "LNN" variable
LNL <- circular(LNL$turn.angle, units="degrees", template="geographics") #LNL
LNM <- circular(LNM$turn.angle, units="degrees", template="geographics") #LNM
LNH <- circular(LNH$turn.angle, units="degrees", template="geographics") #LNH
LNG <- circular(LNG$turn.angle, units="degrees", template="geographics") #LNG

LLN <- circular(LLN$turn.angle, units="degrees", template="geographics") #LLN
LLL <- circular(LLL$turn.angle, units="degrees", template="geographics") #LLL
LLM <- circular(LLM$turn.angle, units="degrees", template="geographics") #LLM
LLH <- circular(LLH$turn.angle, units="degrees", template="geographics") #LLH
LLG <- circular(LLG$turn.angle, units="degrees", template="geographics") #LLG

LMN <- circular(LMN$turn.angle, units="degrees", template="geographics") #LMN
LML <- circular(LML$turn.angle, units="degrees", template="geographics") #LML
LMM <- circular(LMM$turn.angle, units="degrees", template="geographics") #LMM
LMH <- circular(LMH$turn.angle, units="degrees", template="geographics") #LMH
LMG <- circular(LMG$turn.angle, units="degrees", template="geographics") #LMG

LHN <- circular(LHN$turn.angle, units="degrees", template="geographics") #LHN
LHL <- circular(LHL$turn.angle, units="degrees", template="geographics") #LHL
LHM <- circular(LHM$turn.angle, units="degrees", template="geographics") #LHM
LHH <- circular(LHH$turn.angle, units="degrees", template="geographics") #LHH
LHG <- circular(LHG$turn.angle, units="degrees", template="geographics") #LHG

LEN <- circular(LEN$turn.angle, units="degrees", template="geographics") #LEN
LEL <- circular(LEL$turn.angle, units="degrees", template="geographics") #LEL
LEM <- circular(LEM$turn.angle, units="degrees", template="geographics") #LEM
LEH <- circular(LEH$turn.angle, units="degrees", template="geographics") #LEH
LEG <- circular(LEG$turn.angle, units="degrees", template="geographics") #LEG

############  Lights Off

DNN <- circular(DNN$turn.angle, units="degrees", template="geographics") #DNN
DNL <- circular(DNL$turn.angle, units="degrees", template="geographics") #DNL
DNM <- circular(DNM$turn.angle, units="degrees", template="geographics") #DNM
DNH <- circular(DNH$turn.angle, units="degrees", template="geographics") #DNH
DNG <- circular(DNG$turn.angle, units="degrees", template="geographics") #DNG

DLN <- circular(DLN$turn.angle, units="degrees", template="geographics") #DLN
DLL <- circular(DLL$turn.angle, units="degrees", template="geographics") #DLL
DLM <- circular(DLM$turn.angle, units="degrees", template="geographics") #DLM
DLH <- circular(DLH$turn.angle, units="degrees", template="geographics") #DLH
DLG <- circular(DLG$turn.angle, units="degrees", template="geographics") #DLG

DMN <- circular(DMN$turn.angle, units="degrees", template="geographics") #DMN
DML <- circular(DML$turn.angle, units="degrees", template="geographics") #DML
DMM <- circular(DMM$turn.angle, units="degrees", template="geographics") #DMM
DMH <- circular(DMH$turn.angle, units="degrees", template="geographics") #DMH
DMG <- circular(DMG$turn.angle, units="degrees", template="geographics") #DMG

DHN <- circular(DHN$turn.angle, units="degrees", template="geographics") #DHN
DHL <- circular(DHL$turn.angle, units="degrees", template="geographics") #DHL
DHM <- circular(DHM$turn.angle, units="degrees", template="geographics") #DHM
DHH <- circular(DHH$turn.angle, units="degrees", template="geographics") #DHH
DHG <- circular(DHG$turn.angle, units="degrees", template="geographics") #DHG

DEN <- circular(DEN$turn.angle, units="degrees", template="geographics") #DEN
DEL <- circular(DEL$turn.angle, units="degrees", template="geographics") #DEL
DEM <- circular(DEM$turn.angle, units="degrees", template="geographics") #DEM
DEH <- circular(DEH$turn.angle, units="degrees", template="geographics") #DEH
DEG <- circular(DEG$turn.angle, units="degrees", template="geographics") #DEG
######################################################################################

#check that the data was subsetted correctly (south & ambient, too if did already)
print(LNN)
print(LNL)
print(LNM)

Now that data is subsetted, find the means… and plot circular plot with mean vector

Lights On first…

#########################################################################
      ## Lights On No Flow

############################################################################
mean(LNN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LNN, na.rm = TRUE)
meandeviation(LNN, na.rm=TRUE)
summary(LNN, na.rm=TRUE) 
LNN.mean <- mean(LNN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(LNN.mean) #add mean to plot
###########################################################################

mean(LNL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LNL, na.rm = TRUE)
meandeviation(LNL, na.rm=TRUE)
summary(LNL, na.rm=TRUE) 
LNL.mean <- mean(LNL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNL.mean) #add mean to plot
###########################################################################

mean(LNM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LNM, na.rm = TRUE)
meandeviation(LNM, na.rm=TRUE)
summary(LNM, na.rm=TRUE) 
LNM.mean <- mean(LNM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNM.mean) #add mean to plot
###########################################################################

mean(LNH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LNH, na.rm = TRUE)
meandeviation(LNH, na.rm=TRUE)
summary(LNH, na.rm=TRUE) 
LNH.mean <- mean(LNH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNH.mean) #add mean to plot
###########################################################################

mean(LNG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LNG, na.rm = TRUE)
meandeviation(LNG, na.rm=TRUE)
summary(LNG, na.rm=TRUE) 
LNG.mean <- mean(LNG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights On Low Flow

############################################################################
mean(LLN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LLN, na.rm = TRUE)
meandeviation(LLN, na.rm=TRUE)
summary(LLN, na.rm=TRUE) 
LLN.mean <- mean(LLN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLN.mean) #add mean to plot
###########################################################################

mean(LLL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LLL, na.rm = TRUE)
meandeviation(LLL, na.rm=TRUE)
summary(LLL, na.rm=TRUE) 
LLL.mean <- mean(LLL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLL.mean) #add mean to plot
###########################################################################

mean(LLM, na.rm = TRUE) #remove NAs from dataset, then find mean
var(LLM, na.rm = TRUE)
meandeviation(LLM, na.rm=TRUE)
summary(LLM, na.rm=TRUE) 
LLM.mean <- mean(LLM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLM.mean) #add mean to plot
###########################################################################

mean(LLH, na.rm = TRUE) #remove NAs from dataset, then find mean
var(LLH, na.rm = TRUE)
meandeviation(LLH, na.rm=TRUE)
summary(LLH, na.rm=TRUE) 
LLH.mean <- mean(LLH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLH.mean) #add mean to plot
###########################################################################

mean(LLG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LLG, na.rm = TRUE)
meandeviation(LLG, na.rm=TRUE)
summary(LLG, na.rm=TRUE) 
LLG.mean <- mean(LLG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On Medium Flow

############################################################################
mean(LMN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LMN, na.rm = TRUE)
meandeviation(LMN, na.rm=TRUE)
summary(LMN, na.rm=TRUE) 
LMN.mean <- mean(LMN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMN.mean) #add mean to plot
###########################################################################

mean(LML, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LML, na.rm = TRUE)
meandeviation(LML, na.rm=TRUE)
summary(LML, na.rm=TRUE)
LML.mean <- mean(LML, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LML, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LML.mean) #add mean to plot
###########################################################################

mean(LMM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LMM, na.rm = TRUE)
meandeviation(LMM, na.rm=TRUE)
summary(LMM, na.rm=TRUE)
LMM.mean <- mean(LMM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMM.mean) #add mean to plot
###########################################################################

mean(LMH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LMH, na.rm = TRUE)
meandeviation(LMH, na.rm=TRUE)
summary(LMH, na.rm=TRUE)
LMH.mean <- mean(LMH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMH.mean) #add mean to plot
###########################################################################

mean(LMG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LMG, na.rm = TRUE)
meandeviation(LMG, na.rm=TRUE)
summary(LMG, na.rm=TRUE)
LMG.mean <- mean(LMG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On High Flow

############################################################################
mean(LHN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LHN, na.rm = TRUE)
meandeviation(LHN, na.rm=TRUE)
summary(LHN, na.rm=TRUE)
LHN.mean <- mean(LHN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHN.mean) #add mean to plot
###########################################################################

mean(LHL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LHL, na.rm = TRUE)
meandeviation(LHL, na.rm=TRUE)
summary(LHL, na.rm=TRUE)
LHL.mean <- mean(LHL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHL.mean) #add mean to plot
###########################################################################

mean(LHM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LHM, na.rm = TRUE)
meandeviation(LHM, na.rm=TRUE)
summary(LHM, na.rm=TRUE)
LHM.mean <- mean(LHM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHM.mean) #add mean to plot
###########################################################################

mean(LHH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LHH, na.rm = TRUE)
meandeviation(LHH, na.rm=TRUE)
summary(LHH, na.rm=TRUE)
LHH.mean <- mean(LHH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHH.mean) #add mean to plot
###########################################################################

mean(LHG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LHG, na.rm = TRUE)
meandeviation(LHG, na.rm=TRUE)
summary(LHG, na.rm=TRUE)
LHG.mean <- mean(LHG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHG.mean) #add mean to plot
###########################################################################



#########################################################################
      ## Lights On Extreme Flow

############################################################################
mean(LEN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LEN, na.rm = TRUE)
meandeviation(LEN, na.rm=TRUE)
summary(LEN, na.rm=TRUE)
LEN.mean <- mean(LEN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEN.mean) #add mean to plot
###########################################################################

mean(LEL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LEL, na.rm = TRUE)
meandeviation(LEL, na.rm=TRUE)
summary(LEL, na.rm=TRUE)
LEL.mean <- mean(LEL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEL.mean) #add mean to plot
###########################################################################

mean(LEM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LEM, na.rm = TRUE)
meandeviation(LEM, na.rm=TRUE)
summary(LEM, na.rm=TRUE)
LEM.mean <- mean(LEM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEM.mean) #add mean to plot
###########################################################################

mean(LEH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LEH, na.rm = TRUE)
meandeviation(LEH, na.rm=TRUE)
summary(LEH, na.rm=TRUE)
LEH.mean <- mean(LEH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEH.mean) #add mean to plot
###########################################################################

mean(LEG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(LEG, na.rm = TRUE)
meandeviation(LEG, na.rm=TRUE)
summary(LEG, na.rm=TRUE)
LEG.mean <- mean(LEG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEG.mean) #add mean to plot
###########################################################################

Now for lights off AKA Dark

#########################################################################
      ## Lights Off No Flow

############################################################################
mean(DNN, na.rm = TRUE) #remove NAs from dataset, then find mean
var(DNN, na.rm = TRUE)
meandeviation(DNN, na.rm=TRUE)
summary(DNN, na.rm=TRUE)
DNN.mean <- mean(DNN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(DNN.mean) #add mean to plot
###########################################################################

mean(DNL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DNL, na.rm = TRUE)
meandeviation(DNL, na.rm=TRUE)
summary(DNL, na.rm=TRUE)
DNL.mean <- mean(DNL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNL.mean) #add mean to plot
###########################################################################

mean(DNM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DNM, na.rm = TRUE)
meandeviation(DNM, na.rm=TRUE)
summary(DNM, na.rm=TRUE)
DNM.mean <- mean(DNM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNM.mean) #add mean to plot
###########################################################################

mean(DNH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DNH, na.rm = TRUE)
meandeviation(DNH, na.rm=TRUE)
summary(DNH, na.rm=TRUE)
DNH.mean <- mean(DNH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNH.mean) #add mean to plot
###########################################################################

mean(DNG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DNG, na.rm = TRUE)
meandeviation(DNG, na.rm=TRUE)
summary(DNG, na.rm=TRUE)
DNG.mean <- mean(DNG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights Off Low Flow

############################################################################
mean(DLN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DLN, na.rm = TRUE)
meandeviation(DLN, na.rm=TRUE)
summary(DLN, na.rm=TRUE)
DLN.mean <- mean(DLN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLN.mean) #add mean to plot
###########################################################################

mean(DLL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DLL, na.rm = TRUE)
meandeviation(DLL, na.rm=TRUE)
summary(DLL, na.rm=TRUE)
DLL.mean <- mean(DLL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLL.mean) #add mean to plot
###########################################################################

mean(DLM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DLM, na.rm = TRUE)
meandeviation(DLM, na.rm=TRUE)
summary(DLM, na.rm=TRUE)
DLM.mean <- mean(DLM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLM.mean) #add mean to plot
###########################################################################

mean(DLH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DLH, na.rm = TRUE)
meandeviation(DLH, na.rm=TRUE)
summary(DLH, na.rm=TRUE)
DLH.mean <- mean(DLH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLH.mean) #add mean to plot
###########################################################################

mean(DLG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DLG, na.rm = TRUE)
meandeviation(DLG, na.rm=TRUE)
summary(DLG, na.rm=TRUE)
DLG.mean <- mean(DLG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On Medium Flow

############################################################################
mean(DMN, na.rm = TRUE) #remove NAs from dataset, then find mean
var(DMN, na.rm = TRUE)
meandeviation(DMN, na.rm=TRUE)
summary(DMN, na.rm=TRUE)
DMN.mean <- mean(DMN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMN.mean) #add mean to plot
###########################################################################

mean(DML, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DML, na.rm = TRUE)
meandeviation(DML, na.rm=TRUE)
summary(DML, na.rm=TRUE)
DML.mean <- mean(DML, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DML, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DML.mean) #add mean to plot
###########################################################################

mean(DMM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DMM, na.rm = TRUE)
meandeviation(DMM, na.rm=TRUE)
summary(DMM, na.rm=TRUE)
DMM.mean <- mean(DMM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMM.mean) #add mean to plot
###########################################################################

mean(DMH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DMH, na.rm = TRUE)
meandeviation(DMH, na.rm=TRUE)
summary(DMH, na.rm=TRUE)
DMH.mean <- mean(DMH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMH.mean) #add mean to plot
###########################################################################

mean(DMG, na.rm = TRUE) #remove NAs from dataset, then find mean
var(DMG, na.rm = TRUE)
meandeviation(DMG, na.rm=TRUE)
summary(DMG, na.rm=TRUE)
DMG.mean <- mean(DMG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights Off High Flow

############################################################################
mean(DHN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DHN, na.rm = TRUE)
meandeviation(DHN, na.rm=TRUE)
summary(DHN, na.rm=TRUE)
DHN.mean <- mean(DHN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHN.mean) #add mean to plot
###########################################################################

mean(DHL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DHL, na.rm = TRUE)
meandeviation(DHL, na.rm=TRUE)
summary(DHL, na.rm=TRUE)
DHL.mean <- mean(DHL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHL.mean) #add mean to plot
###########################################################################

mean(DHM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DHM, na.rm = TRUE)
meandeviation(DHM, na.rm=TRUE)
summary(DHM, na.rm=TRUE)
DHM.mean <- mean(DHM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHM.mean) #add mean to plot
###########################################################################

mean(DHH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DHH, na.rm = TRUE)
meandeviation(DHH, na.rm=TRUE)
summary(DHH, na.rm=TRUE)
DHH.mean <- mean(DHH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHH.mean) #add mean to plot
###########################################################################

mean(DHG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DHG, na.rm = TRUE)
meandeviation(DHG, na.rm=TRUE)
summary(DHG, na.rm=TRUE)
DHG.mean <- mean(DHG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights Off Extreme Flow

############################################################################
mean(DEN, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DEN, na.rm = TRUE)
meandeviation(DEN, na.rm=TRUE)
summary(DEN, na.rm=TRUE)
DEN.mean <- mean(DEN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEN.mean) #add mean to plot
###########################################################################

mean(DEL, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DEL, na.rm = TRUE)
meandeviation(DEL, na.rm=TRUE)
summary(DEL, na.rm=TRUE)
DEL.mean <- mean(DEL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEL.mean) #add mean to plot
###########################################################################

mean(DEM, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DEM, na.rm = TRUE)
meandeviation(DEM, na.rm=TRUE)
summary(DEM, na.rm=TRUE)
DEM.mean <- mean(DEM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEM.mean) #add mean to plot
###########################################################################

mean(DEH, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DEH, na.rm = TRUE)
meandeviation(DEH, na.rm=TRUE)
summary(DEH, na.rm=TRUE)
DEH.mean <- mean(DEH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEH.mean) #add mean to plot
###########################################################################

mean(DEG, na.rm = TRUE) #remove NAs from dataset, then find mean 
var(DEG, na.rm = TRUE)
meandeviation(DEG, na.rm=TRUE)
summary(DEG, na.rm=TRUE)
DEG.mean <- mean(DEG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEG.mean) #add mean to plot
###########################################################################

Test if mean vectors are significantly different…



##  A Rayleigh Test is a test for significant unimodal orientation (e.g. Is everyone in the treatment going the same direction?).

rayleigh.test(LNN)  ## if significant shows non-uniformity of direction  (No flow vs extreme flow)
rayleigh.test(LEN)  ## if significant shows non-uniformity of direction

# Test whether LNN and LEN (etc) orient differently  

##  A Watson Test determines if two groups’ orientations are significantly different from each other. 
watson.two.test(LNN, LEN)

Do it all again for headings…..

LNN<-data[data$Light=="Present",]
LNN <- LNN[LNN$Flow.rate=="No Flow",]
LNN <- LNN[LNN$Chlorophyll=="No Chlorophyll",]
LNN <- LNN[LNN$Guano=="Absent",]

LNL<-data[data$Light=="Present",]
LNL <- LNL[LNL$Flow.rate=="No Flow",]
LNL <- LNL[LNL$Chlorophyll=="Low Chlorophyll",]
LNL <- LNL[LNL$Guano=="Absent",]

LNM<-data[data$Light=="Present",]
LNM <- LNM[LNM$Flow.rate=="No Flow",]
LNM <- LNM[LNM$Chlorophyll=="Medium Chlorophyll",]
LNM <- LNM[LNM$Guano=="Absent",]

LNH<-data[data$Light=="Present",]
LNH <- LNH[LNH$Flow.rate=="No Flow",]
LNH <- LNH[LNH$Chlorophyll=="High Chlorophyll",]
LNH <- LNH[LNH$Guano=="Absent",]

LNG<-data[data$Light=="Present",]
LNG <- LNG[LNG$Flow.rate=="No Flow",]
LNG <- LNG[LNG$Chlorophyll=="No Chlorophyll",]
LNG <- LNG[LNG$Guano=="Present",]
##############################################################

##    Lights On, Low Flow

###############################################################

LLN<-data[data$Light=="Present",]
LLN <- LLN[LLN$Flow.rate=="Low Flow",]
LLN <- LLN[LLN$Chlorophyll=="No Chlorophyll",]
LLN <- LLN[LLN$Guano=="Absent",]

LLL<-data[data$Light=="Present",]
LLL <- LLL[LLL$Flow.rate=="Low Flow",]
LLL <- LLL[LLL$Chlorophyll=="Low Chlorophyll",]
LLL <- LLL[LLL$Guano=="Absent",]

LLM<-data[data$Light=="Present",]
LLM <- LLM[LLM$Flow.rate=="Low Flow",]
LLM <- LLM[LLM$Chlorophyll=="Medium Chlorophyll",]
LLM <- LLM[LLM$Guano=="Absent",]

LLH<-data[data$Light=="Present",]
LLH <- LLH[LLH$Flow.rate=="Low Flow",]
LLH <- LLH[LLH$Chlorophyll=="High Chlorophyll",]
LLH <- LLH[LLH$Guano=="Absent",]

LLG<-data[data$Light=="Present",]
LLG <- LLG[LLG$Flow.rate=="Low Flow",]
LLG <- LLG[LLG$Chlorophyll=="No Chlorophyll",]
LLG <- LLG[LLG$Guano=="Present",]
#####################################################################

##    Light On, Medium Flow

######################################################################

LMN<-data[data$Light=="Present",]
LMN <- LMN[LMN$Flow.rate=="Medium Flow",]
LMN <- LMN[LMN$Chlorophyll=="No Chlorophyll",]
LMN <- LMN[LMN$Guano=="Absent",]

LML<-data[data$Light=="Present",]
LML <- LML[LML$Flow.rate=="Medium Flow",]
LML <- LML[LML$Chlorophyll=="Low Chlorophyll",]
LML <- LML[LML$Guano=="Absent",]

LMM<-data[data$Light=="Present",]
LMM <- LMM[LMM$Flow.rate=="Medium Flow",]
LMM <- LMM[LMM$Chlorophyll=="Medium Chlorophyll",]
LMM <- LMM[LMM$Guano=="Absent",]

LMH<-data[data$Light=="Present",]
LMH <- LMH[LMH$Flow.rate=="Medium Flow",]
LMH <- LMH[LMH$Chlorophyll=="High Chlorophyll",]
LMH <- LMH[LMH$Guano=="Absent",]

LMG<-data[data$Light=="Present",]
LMG <- LMG[LMG$Flow.rate=="Medium Flow",]
LMG <- LMG[LMG$Chlorophyll=="No Chlorophyll",]
LMG <- LMG[LMG$Guano=="Present",]
################################################################

###    Light On, High Flow

####################################################################

LHN<-data[data$Light=="Present",]
LHN <- LHN[LHN$Flow.rate=="High Flow",]
LHN <- LHN[LHN$Chlorophyll=="No Chlorophyll",]
LHN <- LHN[LHN$Guano=="Absent",]

LHL<-data[data$Light=="Present",]
LHL <- LHL[LHL$Flow.rate=="High Flow",]
LHL <- LHL[LHL$Chlorophyll=="Low Chlorophyll",]
LHL <- LHL[LHL$Guano=="Absent",]

LHM<-data[data$Light=="Present",]
LHM <- LHM[LHM$Flow.rate=="High Flow",]
LHM <- LHM[LHM$Chlorophyll=="Medium Chlorophyll",]
LHM <- LHM[LHM$Guano=="Absent",]

LHH<-data[data$Light=="Present",]
LHH <- LHH[LHH$Flow.rate=="High Flow",]
LHH <- LHH[LHH$Chlorophyll=="High Chlorophyll",]
LHH <- LHH[LHH$Guano=="Absent",]

LHG<-data[data$Light=="Present",]
LHG <- LHG[LHG$Flow.rate=="High Flow",]
LHG <- LHG[LHG$Chlorophyll=="No Chlorophyll",]
LHG <- LHG[LHG$Guano=="Present",]
################################################################


###    Light On, Extreme Flow

####################################################################

LEN<-data[data$Light=="Present",]
LEN <- LEN[LEN$Flow.rate=="Extreme Flow",]
LEN <- LEN[LEN$Chlorophyll=="No Chlorophyll",]
LEN <- LEN[LEN$Guano=="Absent",]

LEL<-data[data$Light=="Present",]
LEL <- LEL[LEL$Flow.rate=="Extreme Flow",]
LEL <- LEL[LEL$Chlorophyll=="Low Chlorophyll",]
LEL <- LEL[LEL$Guano=="Absent",]

LEM<-data[data$Light=="Present",]
LEM <- LEM[LEM$Flow.rate=="Extreme Flow",]
LEM <- LEM[LEM$Chlorophyll=="Medium Chlorophyll",]
LEM <- LEM[LEM$Guano=="Absent",]

LEH<-data[data$Light=="Present",]
LEH <- LEH[LEH$Flow.rate=="Extreme Flow",]
LEH <- LEH[LEH$Chlorophyll=="High Chlorophyll",]
LEH <- LEH[LEH$Guano=="Absent",]

LEG<-data[data$Light=="Present",]
LEG <- LEG[LEG$Flow.rate=="Extreme Flow",]
LEG <- LEG[LEG$Chlorophyll=="No Chlorophyll",]
LEG <- LEG[LEG$Guano=="Present",]
################################################################

#####################################################################

   ##  Light Off, NO Flow

####################################################################

DNN<-data[data$Light=="Absent",]
DNN <- DNN[DNN$Flow.rate=="No Flow",]
DNN <- DNN[DNN$Chlorophyll=="No Chlorophyll",]
DNN <- DNN[DNN$Guano=="Absent",]

DNL<-data[data$Light=="Absent",]
DNL <- DNL[DNL$Flow.rate=="No Flow",]
DNL <- DNL[DNL$Chlorophyll=="Low Chlorophyll",]
DNL <- DNL[DNL$Guano=="Absent",]

DNM<-data[data$Light=="Absent",]
DNM <- DNM[DNM$Flow.rate=="No Flow",]
DNM <- DNM[DNM$Chlorophyll=="Medium Chlorophyll",]
DNM <- DNM[DNM$Guano=="Absent",]

DNH <-data[data$Light=="Absent",]
DNH <- DNH[DNH$Flow.rate=="No Flow",]
DNH <- DNH[DNH$Chlorophyll=="High Chlorophyll",]
DNH <- DNH[DNH$Guano=="Absent",]

DNG<-data[data$Light=="Absent",]
DNG <- DNG[DNG$Flow.rate=="No Flow",]
DNG <- DNG[DNG$Chlorophyll=="No Chlorophyll",]
DNG <- DNG[DNG$Guano=="Present",]
##############################################################

##    Lights Off, Low Flow

###############################################################

DLN <-data[data$Light=="Absent",]
DLN <- DLN[DLN$Flow.rate=="Low Flow",]
DLN <- DLN[DLN$Chlorophyll=="No Chlorophyll",]
DLN <- DLN[DLN$Guano=="Absent",]

DLL <-data[data$Light=="Absent",]
DLL <- DLL[DLL$Flow.rate=="Low Flow",]
DLL <- DLL[DLL$Chlorophyll=="Low Chlorophyll",]
DLL <- DLL[DLL$Guano=="Absent",]

DLM <-data[data$Light=="Absent",]
DLM <- DLM[DLM$Flow.rate=="Low Flow",]
DLM <- DLM[DLM$Chlorophyll=="Medium Chlorophyll",]
DLM <- DLM[DLM$Guano=="Absent",]

DLH <-data[data$Light=="Absent",]
DLH <- DLH[DLH$Flow.rate=="Low Flow",]
DLH <- DLH[DLH$Chlorophyll=="High Chlorophyll",]
DLH <- DLH[DLH$Guano=="Absent",]

DLG <-data[data$Light=="Absent",]
DLG <- DLG[DLG$Flow.rate=="Low Flow",]
DLG <- DLG[DLG$Chlorophyll=="No Chlorophyll",]
DLG <- DLG[DLG$Guano=="Present",]
#####################################################################

##    Light Off, Medium Flow

######################################################################

DMN <-data[data$Light=="Absent",]
DMN <- DMN[DMN$Flow.rate=="Medium Flow",]
DMN <- DMN[DMN$Chlorophyll=="No Chlorophyll",]
DMN <- DMN[DMN$Guano=="Absent",]

DML <-data[data$Light=="Absent",]
DML <- DML[DML$Flow.rate=="Medium Flow",]
DML <- DML[DML$Chlorophyll=="Low Chlorophyll",]
DML <- DML[DML$Guano=="Absent",]

DMM <-data[data$Light=="Absent",]
DMM <- DMM[DMM$Flow.rate=="Medium Flow",]
DMM <- DMM[DMM$Chlorophyll=="Medium Chlorophyll",]
DMM <- DMM[DMM$Guano=="Absent",]

DMH <-data[data$Light=="Absent",]
DMH <- DMH[DMH$Flow.rate=="Medium Flow",]
DMH <- DMH[DMH$Chlorophyll=="High Chlorophyll",]
DMH <- DMH[DMH$Guano=="Absent",]

DMG <-data[data$Light=="Absent",]
DMG <- DMG[DMG$Flow.rate=="Medium Flow",]
DMG <- DMG[DMG$Chlorophyll=="No Chlorophyll",]
DMG <- DMG[DMG$Guano=="Present",]
################################################################

###    Light Off, High Flow

####################################################################

DHN<-data[data$Light=="Absent",]
DHN <- DHN[DHN$Flow.rate=="High Flow",]
DHN <- DHN[DHN$Chlorophyll=="No Chlorophyll",]
DHN <- DHN[DHN$Guano=="Absent",]

DHL<-data[data$Light=="Absent",]
DHL <- DHL[DHL$Flow.rate=="High Flow",]
DHL <- DHL[DHL$Chlorophyll=="Low Chlorophyll",]
DHL <- DHL[DHL$Guano=="Absent",]

DHM<-data[data$Light=="Absent",]
DHM <- DHM[DHM$Flow.rate=="High Flow",]
DHM <- DHM[DHM$Chlorophyll=="Medium Chlorophyll",]
DHM <- DHM[DHM$Guano=="Absent",]

DHH<-data[data$Light=="Absent",]
DHH <- DHH[DHH$Flow.rate=="High Flow",]
DHH <- DHH[DHH$Chlorophyll=="High Chlorophyll",]
DHH <- DHH[DHH$Guano=="Absent",]

DHG<-data[data$Light=="Absent",]
DHG <- DHG[DHG$Flow.rate=="High Flow",]
DHG <- DHG[DHG$Chlorophyll=="No Chlorophyll",]
DHG <- DHG[DHG$Guano=="Present",]
################################################################


###    Light Off, Extreme Flow

####################################################################

DEN<-data[data$Light=="Absent",]
DEN <- DEN[DEN$Flow.rate=="Extreme Flow",]
DEN <- DEN[DEN$Chlorophyll=="No Chlorophyll",]
DEN <- DEN[DEN$Guano=="Absent",]

DEL<-data[data$Light=="Absent",]
DEL <- DEL[DEL$Flow.rate=="Extreme Flow",]
DEL <- DEL[DEL$Chlorophyll=="Low Chlorophyll",]
DEL <- DEL[DEL$Guano=="Absent",]

DEM<-data[data$Light=="Absent",]
DEM <- DEM[DEM$Flow.rate=="Extreme Flow",]
DEM <- DEM[DEM$Chlorophyll=="Medium Chlorophyll",]
DEM <- DEM[DEM$Guano=="Absent",]

DEH<-data[data$Light=="Absent",]
DEH <- DEH[DEH$Flow.rate=="Extreme Flow",]
DEH <- DEH[DEH$Chlorophyll=="High Chlorophyll",]
DEH <- DEH[DEH$Guano=="Absent",]

DEG<-data[data$Light=="Absent",]
DEG <- DEG[DEG$Flow.rate=="Extreme Flow",]
DEG <- DEG[DEG$Chlorophyll=="No Chlorophyll",]
DEG <- DEG[DEG$Guano=="Present",]

Run Loop for each set of conditions

Below section has rm for conditions and droplevels for factors at end

##########################################################################
##Run Loop for each set of conditions

LLL <- droplevels(LLL)
str(LLL)

library(dplyr)
LLL_calculate <- data.frame()
for (dvt in unique(LLL$D_V_T)) {
  data <- LLL %>% subset(D_V_T==dvt)
  for (i in 2:nrow(data)) {
    subdata <- data[((i-1):i),]
    rel_point_x <- subdata[1,"X"]
    rel_point_y <- subdata[1,"Y"]
    cal_point_x <- subdata[2,"X"]
    cal_point_y <- subdata[2,"Y"]
    slope <- (cal_point_y- rel_point_y)/(cal_point_x- rel_point_x)
    angle <- atan(slope)*360/pi
    tmp <- data.frame(D_V_T=dvt,i,rel_point_x,rel_point_y,cal_point_x,cal_point_y,slope,angle)
    LLL_calculate <- rbind(LLL_calculate,tmp)
  }
  print(dvt)
}

###########################################################################
library(circular)
LNH_calculate.deg <- circular(LNH_calculate$angle, units="degrees", template ="geographics")
LNH_calculate.rad <- LNH_calculate.deg*pi/180   ## converts to radians
LNH_calculate.mean <- mean(LNH_calculate.deg, na.rm = TRUE) #assigns to the 'LNN.mean' object

LNH_calculate.mean  ##*180/pi

plot.circular(DEN_calculate.deg, stack = T, pch = 20, sep = 0.08, shrink = 3.6)  ### larger stack number = more zoomed out
arrows.circular(DEN_calculate.mean-180) #add mean to plot in degrees

############################################################################################

## *180/pi
## *pi/180                     
##head(DEN_calculate)
##DEN_calculate <- DEN_calculate*180/pi   ## converts back to degrees
##mean(DEN_calculate, na.rm = TRUE) #remove NAs from dataset, then find mean 

##-0.01458926*180/pi  ## converts back to degrees

## still in radians below
##var(DEN_calculate, na.rm = TRUE)
##meandeviation(DEN_calculate, na.rm=TRUE)
##summary(DEN_calculate)

####################################################

##  Save mean headings for each set of conditions

####################################################


rm(DEG, DEH, DEM, DHH, DHN, DLG, DLH, DLL, DLM, DMG, DMN, DNG, DNL, LEG, LEH, LHH)
##rm(D, d1, d2, dd, dotprod, doty, dotx, dotz, dx1, dx2, dy1, dy2, dz1, dz2, list2, list3, list4, list5, lth, smoothx1, smoothx2, smoothy1, smoothy2)
##rm(smoothz1, smoothz2, v1, v2, vx1, vx2, vy1, vy2, vz1, vz2, x1, x2, y1, y2, z1, z2)
#####################################################################
LHN <- droplevels(LHN)
str(LHN)

save.image("~/Post-doc/Data/Total Merged Data File (Sep 6 2023).RData")

Above section has rm for conditions and droplevels for factors at end

##############################################################################
 ### setting data as circular
##   Lights on

head(LNN)

LNN <- circular(LNN$heading.pi, units="degrees", template="geographics") #assign LNN subset to "LNN" variable
LNL <- circular(LNL$heading.pi, units="degrees", template="geographics") #LNL
LNM <- circular(LNM$heading.pi, units="degrees", template="geographics") #LNM
LNH <- circular(LNH$heading.pi, units="degrees", template="geographics") #LNH
LNG <- circular(LNG$heading.pi, units="degrees", template="geographics") #LNG

LLN <- circular(LLN$heading.pi, units="degrees", template="geographics") #LLN
LLL <- circular(LLL$heading.pi, units="degrees", template="geographics") #LLL
LLM <- circular(LLM$heading.pi, units="degrees", template="geographics") #LLM
LLH <- circular(LLH$heading.pi, units="degrees", template="geographics") #LLH
LLG <- circular(LLG$heading.pi, units="degrees", template="geographics") #LLG

LMN <- circular(LMN$heading.pi, units="degrees", template="geographics") #LMN
LML <- circular(LML$heading.pi, units="degrees", template="geographics") #LML
LMM <- circular(LMM$heading.pi, units="degrees", template="geographics") #LMM
LMH <- circular(LMH$heading.pi, units="degrees", template="geographics") #LMH
LMG <- circular(LMG$heading.pi, units="degrees", template="geographics") #LMG

LHN <- circular(LHN$heading.pi, units="degrees", template="geographics") #LHN
LHL <- circular(LHL$heading.pi, units="degrees", template="geographics") #LHL
LHM <- circular(LHM$heading.pi, units="degrees", template="geographics") #LHM
LHH <- circular(LHH$heading.pi, units="degrees", template="geographics") #LHH
LHG <- circular(LHG$heading.pi, units="degrees", template="geographics") #LHG

LEN <- circular(LEN$heading.pi, units="degrees", template="geographics") #LEN
LEL <- circular(LEL$heading.pi, units="degrees", template="geographics") #LEL
LEM <- circular(LEM$heading.pi, units="degrees", template="geographics") #LEM
LEH <- circular(LEH$heading.pi, units="degrees", template="geographics") #LEH
LEG <- circular(LEG$heading.pi, units="degrees", template="geographics") #LEG

############  Lights Off

DNN <- circular(DNN$heading.pi, units="degrees", template="geographics") #DNN
DNL <- circular(DNL$heading.pi, units="degrees", template="geographics") #DNL
DNM <- circular(DNM$heading.pi, units="degrees", template="geographics") #DNM
DNH <- circular(DNH$heading.pi, units="degrees", template="geographics") #DNH
DNG <- circular(DNG$heading.pi, units="degrees", template="geographics") #DNG

DLN <- circular(DLN$heading.pi, units="degrees", template="geographics") #DLN
DLL <- circular(DLL$heading.pi, units="degrees", template="geographics") #DLL
DLM <- circular(DLM$heading.pi, units="degrees", template="geographics") #DLM
DLH <- circular(DLH$heading.pi, units="degrees", template="geographics") #DLH
DLG <- circular(DLG$heading.pi, units="degrees", template="geographics") #DLG

DMN <- circular(DMN$heading.pi, units="degrees", template="geographics") #DMN
DML <- circular(DML$heading.pi, units="degrees", template="geographics") #DML
DMM <- circular(DMM$heading.pi, units="degrees", template="geographics") #DMM
DMH <- circular(DMH$heading.pi, units="degrees", template="geographics") #DMH
DMG <- circular(DMG$heading.pi, units="degrees", template="geographics") #DMG

DHN <- circular(DHN$heading.pi, units="degrees", template="geographics") #DHN
DHL <- circular(DHL$heading.pi, units="degrees", template="geographics") #DHL
DHM <- circular(DHM$heading.pi, units="degrees", template="geographics") #DHM
DHH <- circular(DHH$heading.pi, units="degrees", template="geographics") #DHH
DHG <- circular(DHG$heading.pi, units="degrees", template="geographics") #DHG

DEN <- circular(DEN$heading.pi, units="degrees", template="geographics") #DEN
DEL <- circular(DEL$heading.pi, units="degrees", template="geographics") #DEL
DEM <- circular(DEM$heading.pi, units="degrees", template="geographics") #DEM
DEH <- circular(DEH$heading.pi, units="degrees", template="geographics") #DEH
DEG <- circular(DEG$heading.pi, units="degrees", template="geographics") #DEG
######################################################################################
############################################################################
mean(LNN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNN.mean <- mean(LNN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(LNN.mean) #add mean to plot
###########################################################################

mean(LNL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNL.mean <- mean(LNL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNL.mean) #add mean to plot
###########################################################################

mean(LNM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNM.mean <- mean(LNM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNM.mean) #add mean to plot
###########################################################################

mean(LNH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNH.mean <- mean(LNH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNH.mean) #add mean to plot
###########################################################################

mean(LNG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNG.mean <- mean(LNG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights On Low Flow

############################################################################
mean(LLN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLN.mean <- mean(LLN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLN.mean) #add mean to plot
###########################################################################

mean(LLL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLL.mean <- mean(LLL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLL.mean) #add mean to plot
###########################################################################

mean(LLM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLM.mean <- mean(LLM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLM.mean) #add mean to plot
###########################################################################

mean(LLH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLH.mean <- mean(LLH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLH.mean) #add mean to plot
###########################################################################

mean(LLG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLG.mean <- mean(LLG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On Medium Flow

############################################################################
mean(LMN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMN.mean <- mean(LMN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMN.mean) #add mean to plot
###########################################################################

mean(LML, na.rm = TRUE) #remove NAs from dataset, then find mean 
LML.mean <- mean(LML, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LML, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LML.mean) #add mean to plot
###########################################################################

mean(LMM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMM.mean <- mean(LMM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMM.mean) #add mean to plot
###########################################################################

mean(LMH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMH.mean <- mean(LMH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMH.mean) #add mean to plot
###########################################################################

mean(LMG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMG.mean <- mean(LMG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On High Flow

############################################################################
mean(LHN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHN.mean <- mean(LHN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHN.mean) #add mean to plot
###########################################################################

mean(LHL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHL.mean <- mean(LHL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHL.mean) #add mean to plot
###########################################################################

mean(LHM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHM.mean <- mean(LHM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHM.mean) #add mean to plot
###########################################################################

mean(LHH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHH.mean <- mean(LHH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHH.mean) #add mean to plot
###########################################################################

mean(LHG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHG.mean <- mean(LHG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHG.mean) #add mean to plot
###########################################################################



#########################################################################
      ## Lights On Extreme Flow

############################################################################
mean(LEN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEN.mean <- mean(LEN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEN.mean) #add mean to plot
###########################################################################

mean(LEL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEL.mean <- mean(LEL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEL.mean) #add mean to plot
###########################################################################

mean(LEM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEM.mean <- mean(LEM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEM.mean) #add mean to plot
###########################################################################

mean(LEH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEH.mean <- mean(LEH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEH.mean) #add mean to plot
###########################################################################

mean(LEG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEG.mean <- mean(LEG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights Off No Flow

############################################################################
mean(DNN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNN.mean <- mean(DNN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(DNN.mean) #add mean to plot
###########################################################################

mean(DNL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNL.mean <- mean(DNL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNL.mean) #add mean to plot
###########################################################################

mean(DNM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNM.mean <- mean(DNM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNM.mean) #add mean to plot
###########################################################################

mean(DNH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNH.mean <- mean(DNH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNH.mean) #add mean to plot
###########################################################################

mean(DNG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNG.mean <- mean(DNG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights Off Low Flow

############################################################################
mean(DLN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLN.mean <- mean(DLN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLN.mean) #add mean to plot
###########################################################################

mean(DLL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLL.mean <- mean(DLL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLL.mean) #add mean to plot
###########################################################################

mean(DLM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLM.mean <- mean(DLM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLM.mean) #add mean to plot
###########################################################################

mean(DLH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLH.mean <- mean(DLH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLH.mean) #add mean to plot
###########################################################################

mean(DLG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLG.mean <- mean(DLG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On Medium Flow

############################################################################
mean(DMN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMN.mean <- mean(DMN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMN.mean) #add mean to plot
###########################################################################

mean(DML, na.rm = TRUE) #remove NAs from dataset, then find mean 
DML.mean <- mean(DML, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DML, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DML.mean) #add mean to plot
###########################################################################

mean(DMM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMM.mean <- mean(DMM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMM.mean) #add mean to plot
###########################################################################

mean(DMH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMH.mean <- mean(DMH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMH.mean) #add mean to plot
###########################################################################

mean(DMG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMG.mean <- mean(DMG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights Off High Flow

############################################################################
mean(DHN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHN.mean <- mean(DHN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHN.mean) #add mean to plot
###########################################################################

mean(DHL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHL.mean <- mean(DHL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHL.mean) #add mean to plot
###########################################################################

mean(DHM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHM.mean <- mean(DHM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHM.mean) #add mean to plot
###########################################################################

mean(DHH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHH.mean <- mean(DHH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHH.mean) #add mean to plot
###########################################################################

mean(DHG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHG.mean <- mean(DHG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights On Extreme Flow

############################################################################
mean(DEN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEN.mean <- mean(DEN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEN.mean) #add mean to plot
###########################################################################

mean(DEL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEL.mean <- mean(DEL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEL.mean) #add mean to plot
###########################################################################

mean(DEM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEM.mean <- mean(DEM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEM.mean) #add mean to plot
###########################################################################

mean(DEH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEH.mean <- mean(DEH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEH.mean) #add mean to plot
###########################################################################

mean(DEG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEG.mean <- mean(DEG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(DEG.mean) #add mean to plot
###########################################################################

and pitch……

LNN<-data[data$Light=="Present",]
LNN <- LNN[LNN$Flow.rate=="No Flow",]
LNN <- LNN[LNN$Chlorophyll=="No Chlorophyll",]
LNN <- LNN[LNN$Guano=="Absent",]

LNL<-data[data$Light=="Present",]
LNL <- LNL[LNL$Flow.rate=="No Flow",]
LNL <- LNL[LNL$Chlorophyll=="Low Chlorophyll",]
LNL <- LNL[LNL$Guano=="Absent",]

LNM<-data[data$Light=="Present",]
LNM <- LNM[LNM$Flow.rate=="No Flow",]
LNM <- LNM[LNM$Chlorophyll=="Medium Chlorophyll",]
LNM <- LNM[LNM$Guano=="Absent",]

LNH<-data[data$Light=="Present",]
LNH <- LNH[LNH$Flow.rate=="No Flow",]
LNH <- LNH[LNH$Chlorophyll=="High Chlorophyll",]
LNH <- LNH[LNH$Guano=="Absent",]

LNG<-data[data$Light=="Present",]
LNG <- LNG[LNG$Flow.rate=="No Flow",]
LNG <- LNG[LNG$Chlorophyll=="No Chlorophyll",]
LNG <- LNG[LNG$Guano=="Present",]
##############################################################

##    Lights On, Low Flow

###############################################################

LLN<-data[data$Light=="Present",]
LLN <- LLN[LLN$Flow.rate=="Low Flow",]
LLN <- LLN[LLN$Chlorophyll=="No Chlorophyll",]
LLN <- LLN[LLN$Guano=="Absent",]

LLL<-data[data$Light=="Present",]
LLL <- LLL[LLL$Flow.rate=="Low Flow",]
LLL <- LLL[LLL$Chlorophyll=="Low Chlorophyll",]
LLL <- LLL[LLL$Guano=="Absent",]

LLM<-data[data$Light=="Present",]
LLM <- LLM[LLM$Flow.rate=="Low Flow",]
LLM <- LLM[LLM$Chlorophyll=="Medium Chlorophyll",]
LLM <- LLM[LLM$Guano=="Absent",]

LLH<-data[data$Light=="Present",]
LLH <- LLH[LLH$Flow.rate=="Low Flow",]
LLH <- LLH[LLH$Chlorophyll=="High Chlorophyll",]
LLH <- LLH[LLH$Guano=="Absent",]

LLG<-data[data$Light=="Present",]
LLG <- LLG[LLG$Flow.rate=="Low Flow",]
LLG <- LLG[LLG$Chlorophyll=="No Chlorophyll",]
LLG <- LLG[LLG$Guano=="Present",]
#####################################################################

##    Light On, Medium Flow

######################################################################

LMN<-data[data$Light=="Present",]
LMN <- LMN[LMN$Flow.rate=="Medium Flow",]
LMN <- LMN[LMN$Chlorophyll=="No Chlorophyll",]
LMN <- LMN[LMN$Guano=="Absent",]

LML<-data[data$Light=="Present",]
LML <- LML[LML$Flow.rate=="Medium Flow",]
LML <- LML[LML$Chlorophyll=="Low Chlorophyll",]
LML <- LML[LML$Guano=="Absent",]

LMM<-data[data$Light=="Present",]
LMM <- LMM[LMM$Flow.rate=="Medium Flow",]
LMM <- LMM[LMM$Chlorophyll=="Medium Chlorophyll",]
LMM <- LMM[LMM$Guano=="Absent",]

LMH<-data[data$Light=="Present",]
LMH <- LMH[LMH$Flow.rate=="Medium Flow",]
LMH <- LMH[LMH$Chlorophyll=="High Chlorophyll",]
LMH <- LMH[LMH$Guano=="Absent",]

LMG<-data[data$Light=="Present",]
LMG <- LMG[LMG$Flow.rate=="Medium Flow",]
LMG <- LMG[LMG$Chlorophyll=="No Chlorophyll",]
LMG <- LMG[LMG$Guano=="Present",]
################################################################

###    Light On, High Flow

####################################################################

LHN<-data[data$Light=="Present",]
LHN <- LHN[LHN$Flow.rate=="High Flow",]
LHN <- LHN[LHN$Chlorophyll=="No Chlorophyll",]
LHN <- LHN[LHN$Guano=="Absent",]

LHL<-data[data$Light=="Present",]
LHL <- LHL[LHL$Flow.rate=="High Flow",]
LHL <- LHL[LHL$Chlorophyll=="Low Chlorophyll",]
LHL <- LHL[LHL$Guano=="Absent",]

LHM<-data[data$Light=="Present",]
LHM <- LHM[LHM$Flow.rate=="High Flow",]
LHM <- LHM[LHM$Chlorophyll=="Medium Chlorophyll",]
LHM <- LHM[LHM$Guano=="Absent",]

LHH<-data[data$Light=="Present",]
LHH <- LHH[LHH$Flow.rate=="High Flow",]
LHH <- LHH[LHH$Chlorophyll=="High Chlorophyll",]
LHH <- LHH[LHH$Guano=="Absent",]

LHG<-data[data$Light=="Present",]
LHG <- LHG[LHG$Flow.rate=="High Flow",]
LHG <- LHG[LHG$Chlorophyll=="No Chlorophyll",]
LHG <- LHG[LHG$Guano=="Present",]
################################################################


###    Light On, Extreme Flow

####################################################################

LEN<-data[data$Light=="Present",]
LEN <- LEN[LEN$Flow.rate=="Extreme Flow",]
LEN <- LEN[LEN$Chlorophyll=="No Chlorophyll",]
LEN <- LEN[LEN$Guano=="Absent",]

LEL<-data[data$Light=="Present",]
LEL <- LEL[LEL$Flow.rate=="Extreme Flow",]
LEL <- LEL[LEL$Chlorophyll=="Low Chlorophyll",]
LEL <- LEL[LEL$Guano=="Absent",]

LEM<-data[data$Light=="Present",]
LEM <- LEM[LEM$Flow.rate=="Extreme Flow",]
LEM <- LEM[LEM$Chlorophyll=="Medium Chlorophyll",]
LEM <- LEM[LEM$Guano=="Absent",]

LEH<-data[data$Light=="Present",]
LEH <- LEH[LEH$Flow.rate=="Extreme Flow",]
LEH <- LEH[LEH$Chlorophyll=="High Chlorophyll",]
LEH <- LEH[LEH$Guano=="Absent",]

LEG<-data[data$Light=="Present",]
LEG <- LEG[LEG$Flow.rate=="Extreme Flow",]
LEG <- LEG[LEG$Chlorophyll=="No Chlorophyll",]
LEG <- LEG[LEG$Guano=="Present",]
################################################################

#####################################################################

   ##  Light Off, NO Flow

####################################################################

DNN<-data[data$Light=="Absent",]
DNN <- DNN[DNN$Flow.rate=="No Flow",]
DNN <- DNN[DNN$Chlorophyll=="No Chlorophyll",]
DNN <- DNN[DNN$Guano=="Absent",]

DNL<-data[data$Light=="Absent",]
DNL <- DNL[DNL$Flow.rate=="No Flow",]
DNL <- DNL[DNL$Chlorophyll=="Low Chlorophyll",]
DNL <- DNL[DNL$Guano=="Absent",]

DNM<-data[data$Light=="Absent",]
DNM <- DNM[DNM$Flow.rate=="No Flow",]
DNM <- DNM[DNM$Chlorophyll=="Medium Chlorophyll",]
DNM <- DNM[DNM$Guano=="Absent",]

DNH <-data[data$Light=="Absent",]
DNH <- DNH[DNH$Flow.rate=="No Flow",]
DNH <- DNH[DNH$Chlorophyll=="High Chlorophyll",]
DNH <- DNH[DNH$Guano=="Absent",]

DNG<-data[data$Light=="Absent",]
DNG <- DNG[DNG$Flow.rate=="No Flow",]
DNG <- DNG[DNG$Chlorophyll=="No Chlorophyll",]
DNG <- DNG[DNG$Guano=="Present",]
##############################################################

##    Lights Off, Low Flow

###############################################################

DLN <-data[data$Light=="Absent",]
DLN <- DLN[DLN$Flow.rate=="Low Flow",]
DLN <- DLN[DLN$Chlorophyll=="No Chlorophyll",]
DLN <- DLN[DLN$Guano=="Absent",]

DLL <-data[data$Light=="Absent",]
DLL <- DLL[DLL$Flow.rate=="Low Flow",]
DLL <- DLL[DLL$Chlorophyll=="Low Chlorophyll",]
DLL <- DLL[DLL$Guano=="Absent",]

DLM <-data[data$Light=="Absent",]
DLM <- DLM[DLM$Flow.rate=="Low Flow",]
DLM <- DLM[DLM$Chlorophyll=="Medium Chlorophyll",]
DLM <- DLM[DLM$Guano=="Absent",]

DLH <-data[data$Light=="Absent",]
DLH <- DLH[DLH$Flow.rate=="Low Flow",]
DLH <- DLH[DLH$Chlorophyll=="High Chlorophyll",]
DLH <- DLH[DLH$Guano=="Absent",]

DLG <-data[data$Light=="Absent",]
DLG <- DLG[DLG$Flow.rate=="Low Flow",]
DLG <- DLG[DLG$Chlorophyll=="No Chlorophyll",]
DLG <- DLG[DLG$Guano=="Present",]
#####################################################################

##    Light Off, Medium Flow

######################################################################

DMN <-data[data$Light=="Absent",]
DMN <- DMN[DMN$Flow.rate=="Medium Flow",]
DMN <- DMN[DMN$Chlorophyll=="No Chlorophyll",]
DMN <- DMN[DMN$Guano=="Absent",]

DML <-data[data$Light=="Absent",]
DML <- DML[DML$Flow.rate=="Medium Flow",]
DML <- DML[DML$Chlorophyll=="Low Chlorophyll",]
DML <- DML[DML$Guano=="Absent",]

DMM <-data[data$Light=="Absent",]
DMM <- DMM[DMM$Flow.rate=="Medium Flow",]
DMM <- DMM[DMM$Chlorophyll=="Medium Chlorophyll",]
DMM <- DMM[DMM$Guano=="Absent",]

DMH <-data[data$Light=="Absent",]
DMH <- DMH[DMH$Flow.rate=="Medium Flow",]
DMH <- DMH[DMH$Chlorophyll=="High Chlorophyll",]
DMH <- DMH[DMH$Guano=="Absent",]

DMG <-data[data$Light=="Absent",]
DMG <- DMG[DMG$Flow.rate=="Medium Flow",]
DMG <- DMG[DMG$Chlorophyll=="No Chlorophyll",]
DMG <- DMG[DMG$Guano=="Present",]
################################################################

###    Light Off, High Flow

####################################################################

DHN<-data[data$Light=="Absent",]
DHN <- DHN[DHN$Flow.rate=="High Flow",]
DHN <- DHN[DHN$Chlorophyll=="No Chlorophyll",]
DHN <- DHN[DHN$Guano=="Absent",]

DHL<-data[data$Light=="Absent",]
DHL <- DHL[DHL$Flow.rate=="High Flow",]
DHL <- DHL[DHL$Chlorophyll=="Low Chlorophyll",]
DHL <- DHL[DHL$Guano=="Absent",]

DHM<-data[data$Light=="Absent",]
DHM <- DHM[DHM$Flow.rate=="High Flow",]
DHM <- DHM[DHM$Chlorophyll=="Medium Chlorophyll",]
DHM <- DHM[DHM$Guano=="Absent",]

DHH<-data[data$Light=="Absent",]
DHH <- DHH[DHH$Flow.rate=="High Flow",]
DHH <- DHH[DHH$Chlorophyll=="High Chlorophyll",]
DHH <- DHH[DHH$Guano=="Absent",]

DHG<-data[data$Light=="Absent",]
DHG <- DHG[DHG$Flow.rate=="High Flow",]
DHG <- DHG[DHG$Chlorophyll=="No Chlorophyll",]
DHG <- DHG[DHG$Guano=="Present",]
################################################################


###    Light Off, Extreme Flow

####################################################################

DEN<-data[data$Light=="Absent",]
DEN <- DEN[DEN$Flow.rate=="Extreme Flow",]
DEN <- DEN[DEN$Chlorophyll=="No Chlorophyll",]
DEN <- DEN[DEN$Guano=="Absent",]

DEL<-data[data$Light=="Absent",]
DEL <- DEL[DEL$Flow.rate=="Extreme Flow",]
DEL <- DEL[DEL$Chlorophyll=="Low Chlorophyll",]
DEL <- DEL[DEL$Guano=="Absent",]

DEM<-data[data$Light=="Absent",]
DEM <- DEM[DEM$Flow.rate=="Extreme Flow",]
DEM <- DEM[DEM$Chlorophyll=="Medium Chlorophyll",]
DEM <- DEM[DEM$Guano=="Absent",]

DEH<-data[data$Light=="Absent",]
DEH <- DEH[DEH$Flow.rate=="Extreme Flow",]
DEH <- DEH[DEH$Chlorophyll=="High Chlorophyll",]
DEH <- DEH[DEH$Guano=="Absent",]

DEG<-data[data$Light=="Absent",]
DEG <- DEG[DEG$Flow.rate=="Extreme Flow",]
DEG <- DEG[DEG$Chlorophyll=="No Chlorophyll",]
DEG <- DEG[DEG$Guano=="Present",]

##########################################################################

##############################################################################
 ### setting data as circular
##   Lights on

head(LNN)

LNN <- circular(LNN$pitch.perfect, units="degrees", template="geographics") #assign LNN subset to "LNN" variable
LNL <- circular(LNL$pitch.perfect, units="degrees", template="geographics") #LNL
LNM <- circular(LNM$pitch.perfect, units="degrees", template="geographics") #LNM
LNH <- circular(LNH$pitch.perfect, units="degrees", template="geographics") #LNH
LNG <- circular(LNG$pitch.perfect, units="degrees", template="geographics") #LNG

LLN <- circular(LLN$pitch.perfect, units="degrees", template="geographics") #LLN
LLL <- circular(LLL$pitch.perfect, units="degrees", template="geographics") #LLL
LLM <- circular(LLM$pitch.perfect, units="degrees", template="geographics") #LLM
LLH <- circular(LLH$pitch.perfect, units="degrees", template="geographics") #LLH
LLG <- circular(LLG$pitch.perfect, units="degrees", template="geographics") #LLG

LMN <- circular(LMN$pitch.perfect, units="degrees", template="geographics") #LMN
LML <- circular(LML$pitch.perfect, units="degrees", template="geographics") #LML
LMM <- circular(LMM$pitch.perfect, units="degrees", template="geographics") #LMM
LMH <- circular(LMH$pitch.perfect, units="degrees", template="geographics") #LMH
LMG <- circular(LMG$pitch.perfect, units="degrees", template="geographics") #LMG

LHN <- circular(LHN$pitch.perfect, units="degrees", template="geographics") #LHN
LHL <- circular(LHL$pitch.perfect, units="degrees", template="geographics") #LHL
LHM <- circular(LHM$pitch.perfect, units="degrees", template="geographics") #LHM
LHH <- circular(LHH$pitch.perfect, units="degrees", template="geographics") #LHH
LHG <- circular(LHG$pitch.perfect, units="degrees", template="geographics") #LHG

LEN <- circular(LEN$pitch.perfect, units="degrees", template="geographics") #LEN
LEL <- circular(LEL$pitch.perfect, units="degrees", template="geographics") #LEL
LEM <- circular(LEM$pitch.perfect, units="degrees", template="geographics") #LEM
LEH <- circular(LEH$pitch.perfect, units="degrees", template="geographics") #LEH
LEG <- circular(LEG$pitch.perfect, units="degrees", template="geographics") #LEG

############  Lights Off

DNN <- circular(DNN$pitch.perfect, units="degrees", template="geographics") #DNN
DNL <- circular(DNL$pitch.perfect, units="degrees", template="geographics") #DNL
DNM <- circular(DNM$pitch.perfect, units="degrees", template="geographics") #DNM
DNH <- circular(DNH$pitch.perfect, units="degrees", template="geographics") #DNH
DNG <- circular(DNG$pitch.perfect, units="degrees", template="geographics") #DNG

DLN <- circular(DLN$pitch.perfect, units="degrees", template="geographics") #DLN
DLL <- circular(DLL$pitch.perfect, units="degrees", template="geographics") #DLL
DLM <- circular(DLM$pitch.perfect, units="degrees", template="geographics") #DLM
DLH <- circular(DLH$pitch.perfect, units="degrees", template="geographics") #DLH
DLG <- circular(DLG$pitch.perfect, units="degrees", template="geographics") #DLG

DMN <- circular(DMN$pitch.perfect, units="degrees", template="geographics") #DMN
DML <- circular(DML$pitch.perfect, units="degrees", template="geographics") #DML
DMM <- circular(DMM$pitch.perfect, units="degrees", template="geographics") #DMM
DMH <- circular(DMH$pitch.perfect, units="degrees", template="geographics") #DMH
DMG <- circular(DMG$pitch.perfect, units="degrees", template="geographics") #DMG

DHN <- circular(DHN$pitch.perfect, units="degrees", template="geographics") #DHN
DHL <- circular(DHL$pitch.perfect, units="degrees", template="geographics") #DHL
DHM <- circular(DHM$pitch.perfect, units="degrees", template="geographics") #DHM
DHH <- circular(DHH$pitch.perfect, units="degrees", template="geographics") #DHH
DHG <- circular(DHG$pitch.perfect, units="degrees", template="geographics") #DHG

DEN <- circular(DEN$pitch.perfect, units="degrees", template="geographics") #DEN
DEL <- circular(DEL$pitch.perfect, units="degrees", template="geographics") #DEL
DEM <- circular(DEM$pitch.perfect, units="degrees", template="geographics") #DEM
DEH <- circular(DEH$pitch.perfect, units="degrees", template="geographics") #DEH
DEG <- circular(DEG$pitch.perfect, units="degrees", template="geographics") #DEG
######################################################################################

############################################################################
mean(LNN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNN.mean <- mean(LNN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(LNN.mean) #add mean to plot
###########################################################################

mean(LNL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNL.mean <- mean(LNL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNL.mean) #add mean to plot
###########################################################################

mean(LNM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNM.mean <- mean(LNM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNM.mean) #add mean to plot
###########################################################################

mean(LNH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNH.mean <- mean(LNH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNH.mean) #add mean to plot
###########################################################################

mean(LNG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LNG.mean <- mean(LNG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LNG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LNG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights On Low Flow

############################################################################
mean(LLN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLN.mean <- mean(LLN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLN.mean) #add mean to plot
###########################################################################

mean(LLL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLL.mean <- mean(LLL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLL.mean) #add mean to plot
###########################################################################

mean(LLM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLM.mean <- mean(LLM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLM.mean) #add mean to plot
###########################################################################

mean(LLH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLH.mean <- mean(LLH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLH.mean) #add mean to plot
###########################################################################

mean(LLG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LLG.mean <- mean(LLG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LLG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LLG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On Medium Flow

############################################################################
mean(LMN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMN.mean <- mean(LMN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMN.mean) #add mean to plot
###########################################################################

mean(LML, na.rm = TRUE) #remove NAs from dataset, then find mean 
LML.mean <- mean(LML, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LML, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LML.mean) #add mean to plot
###########################################################################

mean(LMM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMM.mean <- mean(LMM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMM.mean) #add mean to plot
###########################################################################

mean(LMH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMH.mean <- mean(LMH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMH.mean) #add mean to plot
###########################################################################

mean(LMG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LMG.mean <- mean(LMG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LMG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LMG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On High Flow

############################################################################
mean(LHN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHN.mean <- mean(LHN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHN.mean) #add mean to plot
###########################################################################

mean(LHL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHL.mean <- mean(LHL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHL.mean) #add mean to plot
###########################################################################

mean(LHM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHM.mean <- mean(LHM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHM.mean) #add mean to plot
###########################################################################

mean(LHH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHH.mean <- mean(LHH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHH.mean) #add mean to plot
###########################################################################

mean(LHG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LHG.mean <- mean(LHG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LHG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LHG.mean) #add mean to plot
###########################################################################



#########################################################################
      ## Lights On Extreme Flow

############################################################################
mean(LEN, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEN.mean <- mean(LEN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEN.mean) #add mean to plot
###########################################################################

mean(LEL, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEL.mean <- mean(LEL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEL.mean) #add mean to plot
###########################################################################

mean(LEM, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEM.mean <- mean(LEM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEM.mean) #add mean to plot
###########################################################################

mean(LEH, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEH.mean <- mean(LEH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEH.mean) #add mean to plot
###########################################################################

mean(LEG, na.rm = TRUE) #remove NAs from dataset, then find mean 
LEG.mean <- mean(LEG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(LEG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(LEG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights Off No Flow

############################################################################
mean(DNN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNN.mean <- mean(DNN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(DNN.mean) #add mean to plot
###########################################################################

mean(DNL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNL.mean <- mean(DNL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNL.mean) #add mean to plot
###########################################################################

mean(DNM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNM.mean <- mean(DNM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNM.mean) #add mean to plot
###########################################################################

mean(DNH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNH.mean <- mean(DNH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNH.mean) #add mean to plot
###########################################################################

mean(DNG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DNG.mean <- mean(DNG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DNG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DNG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights Off Low Flow

############################################################################
mean(DLN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLN.mean <- mean(DLN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLN.mean) #add mean to plot
###########################################################################

mean(DLL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLL.mean <- mean(DLL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLL.mean) #add mean to plot
###########################################################################

mean(DLM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLM.mean <- mean(DLM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLM.mean) #add mean to plot
###########################################################################

mean(DLH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLH.mean <- mean(DLH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLH.mean) #add mean to plot
###########################################################################

mean(DLG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DLG.mean <- mean(DLG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DLG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DLG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights On Medium Flow

############################################################################
mean(DMN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMN.mean <- mean(DMN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMN.mean) #add mean to plot
###########################################################################

mean(DML, na.rm = TRUE) #remove NAs from dataset, then find mean 
DML.mean <- mean(DML, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DML, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DML.mean) #add mean to plot
###########################################################################

mean(DMM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMM.mean <- mean(DMM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMM.mean) #add mean to plot
###########################################################################

mean(DMH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMH.mean <- mean(DMH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMH.mean) #add mean to plot
###########################################################################

mean(DMG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DMG.mean <- mean(DMG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DMG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DMG.mean) #add mean to plot
###########################################################################


#########################################################################
      ## Lights Off High Flow

############################################################################
mean(DHN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHN.mean <- mean(DHN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHN.mean) #add mean to plot
###########################################################################

mean(DHL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHL.mean <- mean(DHL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHL.mean) #add mean to plot
###########################################################################

mean(DHM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHM.mean <- mean(DHM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHM.mean) #add mean to plot
###########################################################################

mean(DHH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHH.mean <- mean(DHH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHH.mean) #add mean to plot
###########################################################################

mean(DHG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DHG.mean <- mean(DHG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DHG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DHG.mean) #add mean to plot
###########################################################################

#########################################################################
      ## Lights On Extreme Flow

############################################################################
mean(DEN, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEN.mean <- mean(DEN, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEN, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEN.mean) #add mean to plot
###########################################################################

mean(DEL, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEL.mean <- mean(DEL, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEL, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEL.mean) #add mean to plot
###########################################################################

mean(DEM, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEM.mean <- mean(DEM, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEM, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEM.mean) #add mean to plot
###########################################################################

mean(DEH, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEH.mean <- mean(DEH, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEH, stack = T, pch = 20, sep = 0.08, shrink = 1.6)
arrows.circular(DEH.mean) #add mean to plot
###########################################################################

mean(DEG, na.rm = TRUE) #remove NAs from dataset, then find mean 
DEG.mean <- mean(DEG, na.rm = TRUE) #assigns to the 'LNN.mean' object

plot.circular(DEG, stack = T, pch = 20, sep = 0.08, shrink = 1.6)  ### larger stack number = more zoomed out
arrows.circular(DEG.mean) #add mean to plot
###########################################################################
str(CC.TotalData)

levels(CC.TotalData$D_V)

Tests against each other

################################################### Example of testing means of groups against each other
# Ant orientation from Duelli and Wehner (1973) 
# Example used in Batschelet (1981) 


data1 <- list(exp = circular(LLL_calculate$angle, units="degrees", template="geographics"), control = circular(LNN_calculate$angle, units="degrees", template="geographics"))
           
watson.williams.test(data1)


## gives error 
  ##Warning in watson.williams.test.default(x, group) :
  ##Concentration parameters (0.328, 0.231) not equal between groups. The test might not be applicable
##Warning in watson.williams.test.default(x, group) :
  ##Global concentration parameter: 0.314 < 2. The test is probably not applicable

    ## suggests using Wheeler-Watson test instead

watson.wheeler.test(data1)

## gives warning of :
## Warning in watson.wheeler.test.default(x, group) :
  ##There are 75884 ties in the data.
  ##Ties will be broken appart randomly and may influence the result.
  ##Re-run the test several times to check the influence of ties.

          ## after running 4 times: W = (792.65, .78, .8, .7)
          ## all df's = 2
          ## all p-values = 2.2

Saving Data.frames as csv files

write.csv(agg.data, file = "~/Post-doc/Data/agg.data.Sep.5.2022.csv", row.names = FALSE)

write.csv(CC.TotalData, file = "~/Post-doc/Data/CC.TotalData.Sep.5.2022.csv", row.names = FALSE)

write.csv(data, file = "~/Post-doc/Data/data.Sep.5.2022.csv", row.names = FALSE)

#### Dark conditions save files

write.csv(DEN, file = "~/Post-doc/Data/Conditions Level Data/DEN.csv", row.names = FALSE)
write.csv(DLN, file = "~/Post-doc/Data/Conditions Level Data/DLN.csv", row.names = FALSE)
write.csv(DNH, file = "~/Post-doc/Data/Conditions Level Data/DNH.csv", row.names = FALSE)
write.csv(DNM, file = "~/Post-doc/Data/Conditions Level Data/DNM.csv", row.names = FALSE)
write.csv(DNN, file = "~/Post-doc/Data/Conditions Level Data/DNN.csv", row.names = FALSE)

#### Light conditions save files

write.csv(LNN, file = "~/Post-doc/Data/Conditions Level Data/LNN.csv", row.names = FALSE)
write.csv(LNL, file = "~/Post-doc/Data/Conditions Level Data/LNL.csv", row.names = FALSE)
write.csv(LNM, file = "~/Post-doc/Data/Conditions Level Data/LNM.csv", row.names = FALSE)
write.csv(LNH, file = "~/Post-doc/Data/Conditions Level Data/LNH.csv", row.names = FALSE)
write.csv(LNG, file = "~/Post-doc/Data/Conditions Level Data/LNG.csv", row.names = FALSE)

write.csv(LLN, file = "~/Post-doc/Data/Conditions Level Data/LLN.csv", row.names = FALSE)
write.csv(LLL, file = "~/Post-doc/Data/Conditions Level Data/LLL.csv", row.names = FALSE)
write.csv(LLM, file = "~/Post-doc/Data/Conditions Level Data/LLM.csv", row.names = FALSE)
write.csv(LLG, file = "~/Post-doc/Data/Conditions Level Data/LLG.csv", row.names = FALSE)


write.csv(LMN, file = "~/Post-doc/Data/Conditions Level Data/LMN.csv", row.names = FALSE)
write.csv(LMG, file = "~/Post-doc/Data/Conditions Level Data/LMG.csv", row.names = FALSE)


write.csv(LHN, file = "~/Post-doc/Data/Conditions Level Data/LHN.csv", row.names = FALSE)


write.csv(LEN, file = "~/Post-doc/Data/Conditions Level Data/LEN.csv", row.names = FALSE)
LS0tDQp0aXRsZTogIm5vdGVib29rMTEtQmlubmluZyBkYXRhIGZvciBUYWJsZXMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpMb2FkIGRhdGENCmBgYHtyfQ0Kcm0obGlzdD1scyhhbGw9VFJVRSkpDQpsb2FkKCJ+L1Bvc3QtZG9jL0RhdGEvVG90YWwgTWVyZ2VkIERhdGEgRmlsZSAoSnVseSAyNCAyMDIzKS5SRGF0YSIpDQoNCkNDLlRvdGFsRGF0YSR0dXJuLmFuZ2xleHkgPC0gYXRhbjIoQ0MuVG90YWxEYXRhJFgsIENDLlRvdGFsRGF0YSRZKQ0KQ0MuVG90YWxEYXRhJHR1cm4uYW5nbGV5eiA8LSBhdGFuMihDQy5Ub3RhbERhdGEkWSwgQ0MuVG90YWxEYXRhJFopDQoNCg0KbHRoIDwtIGRpbShDQy5Ub3RhbERhdGEpWzFdDQpkeDEgPC0gQ0MuVG90YWxEYXRhJGR4WzE6KGx0aC0xKV0NCmR4MiA8LSBDQy5Ub3RhbERhdGEkZHhbMjpsdGhdDQpkeTEgPC0gQ0MuVG90YWxEYXRhJGR5WzE6KGx0aC0xKV0NCmR5MiA8LSBDQy5Ub3RhbERhdGEkZHlbMjpsdGhdDQpkejEgPC0gQ0MuVG90YWxEYXRhJGR6WzE6KGx0aC0xKV0NCmR6MiA8LSBDQy5Ub3RhbERhdGEkZHpbMjpsdGhdDQpEIDwtIChkeDEqZHgyKSsoZHkxKmR5MikrKGR6MSpkejIpDQpkMSA8LSBzcXJ0KGR4MV4yICsgZHkxXjIgK2R6MV4yKQ0KZDIgPC0gc3FydChkeDJeMiArIGR5Ml4yICtkejJeMikNCg0KZGQgPC0gRC9kMS9kMg0KaGlzdChhY29zKGRkKS9waSoxODApDQoNCkNDLlRvdGFsRGF0YSR0dXJuLmFuZ2xlLnNtb290aCA8LSBjKE5BLCBhY29zKEQvZDEvZDIpKS9waSoxODANCg0KcmFuZ2UoQ0MuVG90YWxEYXRhJHZlbC50dXJuLmFuZ2xlLnNtb290aCkNCg0KaGVhZChDQy5Ub3RhbERhdGEpDQoNCmBgYA0KDQpDaGFuZ2UgZmFjdG9yIGxldmVscyB0byBOLCBMIE0gSCBFLCBldGMNCmBgYHtyfQ0KIyNDQy5URCA8LSBuYS5vbWl0KENDLlRvdGFsRGF0YSkNCmRhdGEgPC0gQ0MuVG90YWxEYXRhDQpzdHIoZGF0YSkNCmxldmVscyhkYXRhJEZsb3cucmF0ZSkgPC0gYygiTm8gRmxvdyIsIkxvdyBGbG93IiwiTWVkaXVtIEZsb3ciLCAiSGlnaCBGbG93IiwiRXh0cmVtZSBGbG93IikNCnBsb3QoZGF0YSRGbG93LnJhdGUsIGRhdGEkdHVybi5hbmdsZSwgeGxhYiA9ICJGbG93IHJhdGUgKGNtIHMtMSkiLCB5bGFiID0gIlR1cm4gQW5nbGVzIChkZWdyZWVzKSIsIHlsaW0gPSBjKDAsIDE4MCkpDQoNCiMjbGV2ZWxzKGRhdGEkQ2hsb3JvcGh5bGwpIDwtIGMoIk5vIENobG9yb3BoeWxsIiwgIkxvdyBDaGxvcm9waHlsbCIsICJMb3cgQ2hsb3JvcGh5bGwiLCAiTWVkaXVtIENobG9yb3BoeWxsIiwgIk1lZGl1bSBDaGxvcm9waHlsbCIsICAiTWVkaXVtIENobG9yb3BoeWxsIiwgICJNZWRpdW0gQ2hsb3JvcGh5bGwiLCAiSGlnaCBDaGxvcm9waHlsbCIpDQpwbG90KGRhdGEkQ2hsb3JvcGh5bGwsIGRhdGEkdmVsLmZsb3csIHhsYWIgPSAiQ2hsb3JvcGh5bGwgKG1nIEwtMSkiLCB5bGFiID0gIlZlbG9jaXR5IGluIHJlbGF0aW9uIHRvIGZsb3cgKGNtIHMtMSkiKQ0KDQpsaWJyYXJ5KGdncGxvdDIpDQpzdHIoZGF0YSkNCg0KcGFyKG1hcj0gYyg0LDQsMiwxKSkNCnBhcihtZnJvdz1jKDIsMikpDQoNCiMjIyMjIyAgQ2hsb3JvcGh5bGwNCmxpYnJhcnkodGlkeXZlcnNlKQ0KZGF0YSAlPiUgZmlsdGVyKExpZ2h0ICE9ICdQcmVzZW50JykgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBGbG93LnJhdGUsIHkgPSBwaXRjaC5wZXJmZWN0LCBmaWxsID0gQ2hsb3JvcGh5bGwpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgZmFjZXRfZ3JpZCh+R3Vhbm8sIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCiAgdGhlbWVfYncoKQ0KDQoNCmEgPC0gZ2dwbG90KGRhdGEsYWVzKHg9Rmxvdy5yYXRlLCB5PXBpdGNoLnBlcmZlY3QsIGZpbGw9Q2hsb3JvcGh5bGwpKSsNCiAgZ2VvbV9ib3hwbG90KG5vdGNoPUYsIG5vdGNod2lkdGg9MC4zLG91dGxpZXIuc2hhcGU9MSxvdXRsaWVyLnNpemU9MiwgY29lZj0xLjUpKw0KICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIpKSsNCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwLGhqdXN0PTEsdmp1c3Q9MC40KSkrDQogIHRoZW1lKHBhbmVsLmdyaWQubWlub3I9ZWxlbWVudF9ibGFuaygpKSsNCiAgbGFicyhzaXplPSAiIix4ID0gIkZsb3cgUmF0ZSAoY20gcy0xKSIsIHkgPSAiSGVhZGluZyAoZGVncmVlcykiLCB0aXRsZSA9ICJMaWdodCIpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIndoaXRlIiwgImdyZWVueWVsbG93IiwiZ3JlZW4iLCAiZ3JlZW40IiwgImJsYWNrIiksbmFtZSA9ICJDaGxvcm9waHlsbCAobWcgTC0xKSIsDQogICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCJObyBDaGxvcm9waHlsbCIsICJMb3cgQ2hsb3JvcGh5bGwiLCAiTWVkaXVtIENobG9yb3BoeWxsIiwgIkhpZ2ggQ2hsb3JvcGh5bGwiLCAiRmlsYW1lbnQiKSkrDQogIGZhY2V0X2dyaWQofkxpZ2h0LCBzY2FsZXMgPSAiZnJlZV94Iiwgc3BhY2UgPSAiZnJlZSIpDQoNCg0KYiA8LSBnZ3Bsb3QoZGF0YSxhZXMoeD1GbG93LnJhdGUsIHk9aGVhZGluZy5waSwgZmlsbD1DaGxvcm9waHlsbCkpKw0KICBnZW9tX2JveHBsb3Qobm90Y2g9Riwgbm90Y2h3aWR0aD0wLjMsb3V0bGllci5zaGFwZT0xLG91dGxpZXIuc2l6ZT0yLCBjb2VmPTEuNSkrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIikpKw0KICB0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTAsaGp1c3Q9MSx2anVzdD0wLjQpKSsNCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vcj1lbGVtZW50X2JsYW5rKCkpKw0KICBsYWJzKHNpemU9ICIiLHggPSAiRmxvdyBSYXRlIChjbSBzLTEpIiwgeSA9ICJIZWFkaW5nIChkZWdyZWVzKSIsIHRpdGxlID0gIkxpZ2h0IikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9Yygid2hpdGUiLCAiZ3JlZW55ZWxsb3ciLCJncmVlbiIsICJncmVlbjQiLCAiYmxhY2siKSxuYW1lID0gIkNobG9yb3BoeWxsIChtZyBMLTEpIiwNCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzPWMoIk5vIENobG9yb3BoeWxsIiwgIkxvdyBDaGxvcm9waHlsbCIsICJNZWRpdW0gQ2hsb3JvcGh5bGwiLCAiSGlnaCBDaGxvcm9waHlsbCIsICJGaWxhbWVudCIpKSsNCiAgZmFjZXRfZ3JpZCh+TGlnaHQsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCg0KDQpjIDwtIGdncGxvdChkYXRhLGFlcyh4PUZsb3cucmF0ZSwgeT12ZWwuZmxvdywgZmlsbD1DaGxvcm9waHlsbCkpKw0KICBnZW9tX2JveHBsb3Qobm90Y2g9Riwgbm90Y2h3aWR0aD0wLjMsb3V0bGllci5zaGFwZT0xLG91dGxpZXIuc2l6ZT0yLCBjb2VmPTEuNSkrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIikpKw0KICB0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTAsaGp1c3Q9MSx2anVzdD0wLjQpKSsNCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vcj1lbGVtZW50X2JsYW5rKCkpKw0KICBsYWJzKHNpemU9ICIiLHggPSAiRmxvdyBSYXRlIChjbSBzLTEpIiwgeSA9ICJWZWxvY2l0eSBpbiByZWxhdGlvbiB0byBmbG93IChjbSBzLTEpIiwgdGl0bGUgPSAiTGlnaHQiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJ3aGl0ZSIsICJncmVlbnllbGxvdyIsImdyZWVuIiwgImdyZWVuNCIsICJibGFjayIpLG5hbWUgPSAiQ2hsb3JvcGh5bGwgKG1nIEwtMSkiLA0KICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiTm8gQ2hsb3JvcGh5bGwiLCAiTG93IENobG9yb3BoeWxsIiwgIk1lZGl1bSBDaGxvcm9waHlsbCIsICJIaWdoIENobG9yb3BoeWxsIiwgIkZpbGFtZW50IikpKw0KICBmYWNldF9ncmlkKH5MaWdodCwgc2NhbGVzID0gImZyZWVfeCIsIHNwYWNlID0gImZyZWUiKQ0KDQoNCmQgPC0gZ2dwbG90KGRhdGEsYWVzKHg9Rmxvdy5yYXRlLCB5PXZlbC50dXJuLmFuZ2xlLnNtb290aCwgZmlsbD1DaGxvcm9waHlsbCkpKw0KICBnZW9tX2JveHBsb3Qobm90Y2g9Riwgbm90Y2h3aWR0aD0wLjMsb3V0bGllci5zaGFwZT0xLG91dGxpZXIuc2l6ZT0yLCBjb2VmPTEuNSkrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIikpKw0KICB0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTAsaGp1c3Q9MSx2anVzdD0wLjQpKSsNCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vcj1lbGVtZW50X2JsYW5rKCkpKw0KICBsYWJzKHNpemU9ICIiLHggPSAiRmxvdyBSYXRlIChjbSBzLTEpIiwgeSA9ICJUdXJuIEFuZ2xlcyAoZGVncmVlcykiLCB0aXRsZSA9ICJMaWdodCIpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIndoaXRlIiwgImdyZWVueWVsbG93IiwiZ3JlZW4iLCAiZ3JlZW40IiwgImJsYWNrIiksbmFtZSA9ICJDaGxvcm9waHlsbCAobWcgTC0xKSIsDQogICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCJObyBDaGxvcm9waHlsbCIsICJMb3cgQ2hsb3JvcGh5bGwiLCAiTWVkaXVtIENobG9yb3BoeWxsIiwgIkhpZ2ggQ2hsb3JvcGh5bGwiLCAiRmlsYW1lbnQiKSkrDQogIGZhY2V0X2dyaWQofkxpZ2h0LCBzY2FsZXMgPSAiZnJlZV94Iiwgc3BhY2UgPSAiZnJlZSIpDQoNCmENCmINCmMNCmQNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQojIyMjIyMjIyAgR3Vhbm8NCg0KZ2dwbG90KGRhdGEsYWVzKHg9Rmxvdy5yYXRlLCB5PXNtb290aC5waXRjaCwgZmlsbD1HdWFubykpKw0KICBnZW9tX2JveHBsb3Qobm90Y2g9Riwgbm90Y2h3aWR0aD0wLjMsb3V0bGllci5zaGFwZT0xLG91dGxpZXIuc2l6ZT0yLCBjb2VmPTEuNSkrDQogIHRoZW1lKGF4aXMudGV4dD1lbGVtZW50X3RleHQoY29sb3I9ImJsYWNrIikpKw0KICB0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoYW5nbGU9OTAsaGp1c3Q9MSx2anVzdD0wLjQpKSsNCiAgdGhlbWUocGFuZWwuZ3JpZC5taW5vcj1lbGVtZW50X2JsYW5rKCkpKw0KICBsYWJzKHNpemU9ICIiLHggPSAiRmxvdyBSYXRlIChjbSBzLTEpIiwgeSA9ICJQaXRjaCAoZGVncmVlcykiLCB0aXRsZSA9ICJMaWdodCIpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIndoaXRlIiwgInJlZCIpLG5hbWUgPSAiR3Vhbm8gKDMgbWcgTC0xKSIsDQogICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCJHdWFubyBBYnNlbnQiLCAiR3Vhbm8gUHJlc2VudCIpKSsNCiAgZmFjZXRfZ3JpZCh+TGlnaHQsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCg0KDQpnZ3Bsb3QoZGF0YSxhZXMoeD1GbG93LnJhdGUsIHk9c21vb3RoLmhlYWRpbmcsIGZpbGw9R3Vhbm8pKSsNCiAgZ2VvbV9ib3hwbG90KG5vdGNoPUYsIG5vdGNod2lkdGg9MC4zLG91dGxpZXIuc2hhcGU9MSxvdXRsaWVyLnNpemU9MiwgY29lZj0xLjUpKw0KICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIpKSsNCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwLGhqdXN0PTEsdmp1c3Q9MC40KSkrDQogIHRoZW1lKHBhbmVsLmdyaWQubWlub3I9ZWxlbWVudF9ibGFuaygpKSsNCiAgbGFicyhzaXplPSAiIix4ID0gIkZsb3cgUmF0ZSAoY20gcy0xKSIsIHkgPSAiSGVhZGluZyAoZGVncmVlcykiLCB0aXRsZSA9ICJMaWdodCIpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzPWMoIndoaXRlIiwgInJlZCIpLG5hbWUgPSAiR3Vhbm8gKDMgbWcgTC0xKSIsDQogICAgICAgICAgICAgICAgICAgIGxhYmVscz1jKCJHdWFubyBBYnNlbnQiLCAiR3Vhbm8gUHJlc2VudCIpKSsNCiAgZmFjZXRfZ3JpZCh+TGlnaHQsIHNjYWxlcyA9ICJmcmVlX3giLCBzcGFjZSA9ICJmcmVlIikNCg0KDQpnZ3Bsb3QoZGF0YSxhZXMoeD1GbG93LnJhdGUsIHk9dmVsLmZsb3csIGZpbGw9R3Vhbm8pKSsNCiAgZ2VvbV9ib3hwbG90KG5vdGNoPUYsIG5vdGNod2lkdGg9MC4zLG91dGxpZXIuc2hhcGU9MSxvdXRsaWVyLnNpemU9MiwgY29lZj0xLjUpKw0KICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIpKSsNCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwLGhqdXN0PTEsdmp1c3Q9MC40KSkrDQogIHRoZW1lKHBhbmVsLmdyaWQubWlub3I9ZWxlbWVudF9ibGFuaygpKSsNCiAgbGFicyhzaXplPSAiIix4ID0gIkZsb3cgUmF0ZSAoY20gcy0xKSIsIHkgPSAiVmVsb2NpdHkgaW4gcmVsYXRpb24gdG8gZmxvdyAoY20gcy0xKSIsIHRpdGxlID0gIkxpZ2h0IikgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9Yygid2hpdGUiLCAicmVkIiksbmFtZSA9ICJHdWFubyAoMyBtZyBMLTEpIiwNCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzPWMoIkd1YW5vIEFic2VudCIsICJHdWFubyBQcmVzZW50IikpKw0KICBmYWNldF9ncmlkKH5MaWdodCwgc2NhbGVzID0gImZyZWVfeCIsIHNwYWNlID0gImZyZWUiKQ0KDQoNCmdncGxvdChkYXRhLGFlcyh4PUZsb3cucmF0ZSwgeT12ZWwudHVybi5hbmdsZS5zbW9vdGgsIGZpbGw9R3Vhbm8pKSsNCiAgZ2VvbV9ib3hwbG90KG5vdGNoPUYsIG5vdGNod2lkdGg9MC4zLG91dGxpZXIuc2hhcGU9MSxvdXRsaWVyLnNpemU9MiwgY29lZj0xLjUpKw0KICB0aGVtZShheGlzLnRleHQ9ZWxlbWVudF90ZXh0KGNvbG9yPSJibGFjayIpKSsNCiAgdGhlbWUoYXhpcy50ZXh0Lng9ZWxlbWVudF90ZXh0KGFuZ2xlPTkwLGhqdXN0PTEsdmp1c3Q9MC40KSkrDQogIHRoZW1lKHBhbmVsLmdyaWQubWlub3I9ZWxlbWVudF9ibGFuaygpKSsNCiAgbGFicyhzaXplPSAiIix4ID0gIkZsb3cgUmF0ZSAoY20gcy0xKSIsIHkgPSAiVHVybiBBbmdsZXMgKGRlZ3JlZXMpIiwgdGl0bGUgPSAiTGlnaHQiKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCJ3aGl0ZSIsICJyZWQiKSxuYW1lID0gIkd1YW5vICgzIG1nIEwtMSkiLA0KICAgICAgICAgICAgICAgICAgICBsYWJlbHM9YygiR3Vhbm8gQWJzZW50IiwgIkd1YW5vIFByZXNlbnQiKSkrDQogIGZhY2V0X2dyaWQofkxpZ2h0LCBzY2FsZXMgPSAiZnJlZV94Iiwgc3BhY2UgPSAiZnJlZSIpDQoNCg0KDQpzYXZlLmltYWdlKCJ+L1Bvc3QtZG9jL0RhdGEvVG90YWwgTWVyZ2VkIERhdGEgRmlsZSAoU2VwIDYgMjAyMykuUkRhdGEiKQ0KYGBgDQoNCmFnZ3JlZ2F0ZSBkYXRhIGJ5IGZhY3RvciBsZXZlbHMNCkZpbmQgbWF4LCBtaW4sIG1lYW4gYW5kIHNkIGZvciB2IGFuZCB2ZWwuZmxvdw0KYGBge3J9DQpzdHIgKENDLlRvdGFsRGF0YSkNCiMjIyBhZ2dyZWdhdGUgZGF0YQ0KDQphZ2cuZGF0YSA8LSBhZ2dyZWdhdGUoZGF0YSwgYnkgPSBsaXN0KGRhdGEkTGlnaHQsIGRhdGEkRmxvdy5yYXRlLCBkYXRhJENobG9yb3BoeWxsLCBkYXRhJEd1YW5vKSwgRlVOID0gbWVhbikNCmhlYWQoYWdnLmRhdGEpDQphZ2cuZGF0YSA8LSBhZ2cuZGF0YVsgLWMoNTo2LCAxMDoxNykgXQ0KaGVhZChhZ2cuZGF0YSkNCmNvbG5hbWVzKGFnZy5kYXRhKSA8LSBjKCJMaWdodCIsICJGbG93LnJhdGUiLCAiQ2hsb3JvcGh5bGwiLCAiR3Vhbm8iLCAiWCIsICJZIiwgIloiLCAiZHgiLCAiZHkiLCAiZHoiLCAiZCIsICJ2eCIsICJ2eSIsICJ2eiIsICJ2IiwgImhlYWRpbmciLCAicGl0Y2giLCAidmVsLnR1cm4uYW5nbGUiLCAidmVsLmZsb3ciLCAidHJpbS5YIiwgInhzbW9vdGgiLCAieXNtb290aCIsICJ6c21vb3RoIiwgInNtb290aC5keCIsICJzbW9vdGguZHkiLCAic21vb3RoLmR6IiwgInNtb290aC5kIiwgInNtb290aC52eCIsICJzbW9vdGgudnkiLCAic21vb3RoLnZ6IiwgInNtb290aC52IiwgInNtb290aC5oZWFkaW5nIiwgImhlYWRpbmcucGkiLCAic21vb3RoLnBpdGNoIiwgInBpdGNoLnBlcmZlY3QiLCAidHVybi5hbmdsZXh5c21vb3RoIiwgICJ0dXJuLmFuZ2xleXpzbW9vdGgiLCAidHVybi5hbmdsZS5zbW9vdGgiLCAidmVsLnR1cm4uYW5nbGUuc21vb3RoIiwgInR1cm4uYW5nbGV4eSIsICJ0dXJuLmFuZ2xleXoiLCAidHVybi5hbmdsZSIpDQpoZWFkKGFnZy5kYXRhKQ0KdGFpbChhZ2cuZGF0YSkNCg0KcmFuZ2UoZGF0YSR2ZWwudHVybi5hbmdsZS5zbW9vdGgpDQojIyMgbWVhbnMsIHNkLCBtaW4gYW5kIG1heCBmb3IgdiBhbmQgdmVsIGZsb3cNCg0KbGlicmFyeShkcGx5cikNCmRhdGEgJT4lIGdyb3VwX2J5KExpZ2h0LCBGbG93LnJhdGUsIENobG9yb3BoeWxsLCBHdWFubykgJT4lIHN1bW1hcmlzZV9hdCh2YXJzKHZlbC50dXJuLmFuZ2xlLnNtb290aCksIGZ1bnMobWluLCBtYXgsIG1lYW4sIHNkKSkNCg0KZGF0YSAlPiUgZ3JvdXBfYnkoTGlnaHQsIEZsb3cucmF0ZSwgQ2hsb3JvcGh5bGwsIEd1YW5vKSAlPiUgc3VtbWFyaXNlX2F0KHZhcnModmVsLmZsb3cpLCBmdW5zKG1pbiwgbWF4LCBtZWFuLCBzZCkpDQoNCmBgYA0KDQpDaXJjdWxhciBzdGF0cyBmb3IgYW5nbGUgZGF0YQ0KVG90YWwgYW5nbGVzDQpgYGB7cn0NCiMjIyBjaXJjdWxhciBzdGF0cyBmb3IgYW5nbGVzDQpyYW5nZShkYXRhJHR1cm4uYW5nbGUpDQpsaWJyYXJ5KGNpcmN1bGFyKQ0KDQpjaXJjIDwtIGNpcmN1bGFyKGRhdGEkdHVybi5hbmdsZSwgdHlwZSA9IGMoImFuZ2xlcyIpLA0KICAgICAgICAgIHVuaXRzID0gYygiZGVncmVlcyIpLA0KICAgICAgICAgIHRlbXBsYXRlID0gYygiZ2VvZ3JhcGhpY3MiKSkNCg0KIyMgUzMgbWV0aG9kIGZvciBjbGFzcyAnY2lyY3VsYXInDQojIyBhcyhjaXJjLCBjb250cm9sLmNpcmN1bGFyPWxpc3QoKSwgLi4uKSAjIyBOT1QgV09SS0lORyBDVVJSRU5UTFkNCg0KIyMgUzMgbWV0aG9kIGZvciBjbGFzcyAnY2lyY3VsYXInDQppcyhjaXJjKQ0KDQojIyBTMyBtZXRob2QgZm9yIGNsYXNzICdjaXJjdWxhcicNCnByaW50KGNpcmMsIGluZm89VFJVRSkNCg0KDQojIyBTMyBtZXRob2QgZm9yIGNsYXNzICdjaXJjdWxhcicNCnBsb3QoY2lyYywgcGNoID0gMTYsIGNleCA9IDEsIHN0YWNrID0gVFJVRSwNCmF4ZXMgPSBUUlVFLCBzdGFydC5zZXA9MCwgc2VwID0gMC4wMjUsIHNocmluayA9IDMuNSwgICAjIyMgbGFyZ2VyIHN0YWNrIG51bWJlciA9IG1vcmUgem9vbWVkIG91dA0KYmlucyA9IDEyMCwgdGlja3MgPSBGQUxTRSwgdGNsID0gMC4wMjUsIHRjbC50ZXh0ID0gMC4xMjUsDQpjb2wgPSBOVUxMLCB0b2wgPSAwLjA0LCB1aW4gPSBOVUxMLA0KeGxpbSA9IGMoLTEsIDEpLCB5bGltID0gYygtMSwgMSksIGRpZ2l0cyA9IDIsIHVuaXRzID0gTlVMTCwNCnRlbXBsYXRlID0gTlVMTCwgemVybyA9IE5VTEwsIHJvdGF0aW9uID0gTlVMTCwNCm1haW4gPSBOVUxMLCBzdWI9TlVMTCwgeGxhYiA9ICIiLCB5bGFiID0gIiIsDQpjb250cm9sLmNpcmNsZT1jaXJjbGUuY29udHJvbCgpKQ0KDQoNCiMjIyBjYWxjdWxhdGluZyBtZWFuIHZlY3RvciBmcm9tIGNpcmN1bGFyIGRhdGENCm1lYW4oY2lyYykNCg0KIyMgY2FsY3VsYXRpbmcgdmFyaWFuY2Ugb2YgdGhlIHZlY3RvciBmcm9tIGNpcmN1bGFyIGRhdGENCnZhcihjaXJjKQ0KDQojIyBjYWxjdWxhdGluZyBtZWFuIGRldmlhdGlvbiBmcm9tIGNpcmN1bGFyIGRhdGENCm1lYW5kZXZpYXRpb24oY2lyYykNCg0KIyBDb21wdXRlIHN1bW1hcnkgc3RhdGlzdGljcyBvZiBhIHJhbmRvbSBzYW1wbGUgb2Ygb2JzZXJ2YXRpb25zLiANCnN1bW1hcnkoY2lyYykgDQoNCiMjIEFOT1ZBIHVzaW5nIGNpcmN1bGFyIHN0YXRzDQphb3YuY2lyY3VsYXIoY2lyYywgQ0MuVG90YWxEYXRhJExpZ2h0KSAjIyB3b3JraW5nIGJ1dCB1bnN1cmUNCg0KYGBgDQoNClN1Yi1zZXR0aW5nIGZhY3RvcnMgaW50byBzZXBhcmF0ZSBkYXRhIHNldHMgdG8gY2FsY3VsYXRlIG1lYW4gdmVjdG9ycyBhbmQgZGlzcGVyc2lvbiBmb3IgYW5nbGUgZGF0YQ0KYGBge3J9DQojIyBTdWJzZXQgZWFjaCBjb2x1bW4gKGVhY2ggdHJlYXRtZW50KSwgYW5kIGFzc2lnbiBhcyBjaXJjdWxhciBkYXRhDQojI2xpYnJhcnkoY2lyY3VsYXIpDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KICAgIyMgIExpZ2h0IE9uLCBOTyBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpMTk48LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxOTiA8LSBMTk5bTE5OJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkxOTiA8LSBMTk5bTE5OJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxOTiA8LSBMTk5bTE5OJEd1YW5vPT0iQWJzZW50IixdDQoNCkxOTDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE5MIDwtIExOTFtMTkwkRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KTE5MIDwtIExOTFtMTkwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkxOTCA8LSBMTkxbTE5MJEd1YW5vPT0iQWJzZW50IixdDQoNCkxOTTwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE5NIDwtIExOTVtMTk0kRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KTE5NIDwtIExOTVtMTk0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkxOTSA8LSBMTk1bTE5NJEd1YW5vPT0iQWJzZW50IixdDQoNCkxOSDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE5IIDwtIExOSFtMTkgkRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KTE5IIDwtIExOSFtMTkgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMTkggPC0gTE5IW0xOSCRHdWFubz09IkFic2VudCIsXQ0KDQpMTkc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxORyA8LSBMTkdbTE5HJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkxORyA8LSBMTkdbTE5HJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxORyA8LSBMTkdbTE5HJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMgICAgTGlnaHRzIE9uLCBMb3cgRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KTExOPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTE4gPC0gTExOW0xMTiRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KTExOIDwtIExMTltMTE4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KTExOIDwtIExMTltMTE4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTExMPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTEwgPC0gTExMW0xMTCRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KTExMIDwtIExMTFtMTEwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkxMTCA8LSBMTExbTExMJEd1YW5vPT0iQWJzZW50IixdDQoNCkxMTTwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTExNIDwtIExMTVtMTE0kRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkxMTSA8LSBMTE1bTExNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpMTE0gPC0gTExNW0xMTSRHdWFubz09IkFic2VudCIsXQ0KDQpMTEg8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxMSCA8LSBMTEhbTExIJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpMTEggPC0gTExIW0xMSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkxMSCA8LSBMTEhbTExIJEd1YW5vPT0iQWJzZW50IixdDQoNCkxMRzwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTExHIDwtIExMR1tMTEckRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkxMRyA8LSBMTEdbTExHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxMRyA8LSBMTEdbTExHJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjICAgIExpZ2h0IE9uLCBNZWRpdW0gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkxNTjwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE1OIDwtIExNTltMTU4kRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkxNTiA8LSBMTU5bTE1OJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxNTiA8LSBMTU5bTE1OJEd1YW5vPT0iQWJzZW50IixdDQoNCkxNTDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE1MIDwtIExNTFtMTUwkRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkxNTCA8LSBMTUxbTE1MJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpMTUwgPC0gTE1MW0xNTCRHdWFubz09IkFic2VudCIsXQ0KDQpMTU08LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxNTSA8LSBMTU1bTE1NJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpMTU0gPC0gTE1NW0xNTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KTE1NIDwtIExNTVtMTU0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTE1IPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTUggPC0gTE1IW0xNSCRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KTE1IIDwtIExNSFtMTUgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMTUggPC0gTE1IW0xNSCRHdWFubz09IkFic2VudCIsXQ0KDQpMTUc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxNRyA8LSBMTUdbTE1HJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpMTUcgPC0gTE1HW0xNRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMTUcgPC0gTE1HW0xNRyRHdWFubz09IlByZXNlbnQiLF0NCg0KTE1DIDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE1DIDwtIExNQ1tMTUMkRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkxNQyA8LSBMTUNbTE1DJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpMTUMgPC0gTE1DW0xNQyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjICAgIExpZ2h0IE9uLCBIaWdoIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KTEhOPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMSE4gPC0gTEhOW0xITiRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkxITiA8LSBMSE5bTEhOJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxITiA8LSBMSE5bTEhOJEd1YW5vPT0iQWJzZW50IixdDQoNCkxITDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEhMIDwtIExITFtMSEwkRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpMSEwgPC0gTEhMW0xITCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KTEhMIDwtIExITFtMSEwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEhNPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMSE0gPC0gTEhNW0xITSRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkxITSA8LSBMSE1bTEhNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpMSE0gPC0gTEhNW0xITSRHdWFubz09IkFic2VudCIsXQ0KDQpMSEg8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxISCA8LSBMSEhbTEhIJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KTEhIIDwtIExISFtMSEgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMSEggPC0gTEhIW0xISCRHdWFubz09IkFic2VudCIsXQ0KDQpMSEc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxIRyA8LSBMSEdbTEhHJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KTEhHIDwtIExIR1tMSEckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KTEhHIDwtIExIR1tMSEckR3Vhbm89PSJQcmVzZW50IixdDQoNCg0KTEhDPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMSEMgPC0gTEhDW0xIQyRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkxIQyA8LSBMSENbTEhDJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpMSEMgPC0gTEhDW0xIQyRHdWFubz09IlByZXNlbnQiLF0NCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQojIyMgICAgTGlnaHQgT24sIEV4dHJlbWUgRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpMRU48LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxFTiA8LSBMRU5bTEVOJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KTEVOIDwtIExFTltMRU4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KTEVOIDwtIExFTltMRU4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEVMPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMRUwgPC0gTEVMW0xFTCRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkxFTCA8LSBMRUxbTEVMJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpMRUwgPC0gTEVMW0xFTCRHdWFubz09IkFic2VudCIsXQ0KDQpMRU08LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxFTSA8LSBMRU1bTEVNJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KTEVNIDwtIExFTVtMRU0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkxFTSA8LSBMRU1bTEVNJEd1YW5vPT0iQWJzZW50IixdDQoNCkxFSDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEVIIDwtIExFSFtMRUgkRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpMRUggPC0gTEVIW0xFSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkxFSCA8LSBMRUhbTEVIJEd1YW5vPT0iQWJzZW50IixdDQoNCkxFRzwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEVHIDwtIExFR1tMRUckRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpMRUcgPC0gTEVHW0xFRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMRUcgPC0gTEVHW0xFRyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiAgICMjICBMaWdodCBPZmYsIE5PIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KRE5OPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkROTiA8LSBETk5bRE5OJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkROTiA8LSBETk5bRE5OJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkROTiA8LSBETk5bRE5OJEd1YW5vPT0iQWJzZW50IixdDQoNCkROTDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETkwgPC0gRE5MW0ROTCRGbG93LnJhdGU9PSJObyBGbG93IixdDQpETkwgPC0gRE5MW0ROTCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KRE5MIDwtIEROTFtETkwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE5NPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkROTSA8LSBETk1bRE5NJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkROTSA8LSBETk1bRE5NJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpETk0gPC0gRE5NW0ROTSRHdWFubz09IkFic2VudCIsXQ0KDQpETkggPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkROSCA8LSBETkhbRE5IJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkROSCA8LSBETkhbRE5IJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KRE5IIDwtIEROSFtETkgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE5HPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRORyA8LSBETkdbRE5HJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkRORyA8LSBETkdbRE5HJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRORyA8LSBETkdbRE5HJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMgICAgTGlnaHRzIE9mZiwgTG93IEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkRMTiA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRExOIDwtIERMTltETE4kRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkRMTiA8LSBETE5bRExOJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRMTiA8LSBETE5bRExOJEd1YW5vPT0iQWJzZW50IixdDQoNCkRMTCA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRExMIDwtIERMTFtETEwkRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkRMTCA8LSBETExbRExMJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpETEwgPC0gRExMW0RMTCRHdWFubz09IkFic2VudCIsXQ0KDQpETE0gPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRMTSA8LSBETE1bRExNJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpETE0gPC0gRExNW0RMTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KRExNIDwtIERMTVtETE0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KRExIIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETEggPC0gRExIW0RMSCRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KRExIIDwtIERMSFtETEgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpETEggPC0gRExIW0RMSCRHdWFubz09IkFic2VudCIsXQ0KDQpETEcgPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRMRyA8LSBETEdbRExHJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpETEcgPC0gRExHW0RMRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpETEcgPC0gRExHW0RMRyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyAgICBMaWdodCBPZmYsIE1lZGl1bSBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KRE1OIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETU4gPC0gRE1OW0RNTiRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KRE1OIDwtIERNTltETU4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KRE1OIDwtIERNTltETU4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE1MIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETUwgPC0gRE1MW0RNTCRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KRE1MIDwtIERNTFtETUwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkRNTCA8LSBETUxbRE1MJEd1YW5vPT0iQWJzZW50IixdDQoNCkRNTSA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE1NIDwtIERNTVtETU0kRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkRNTSA8LSBETU1bRE1NJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpETU0gPC0gRE1NW0RNTSRHdWFubz09IkFic2VudCIsXQ0KDQpETUggPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRNSCA8LSBETUhbRE1IJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpETUggPC0gRE1IW0RNSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkRNSCA8LSBETUhbRE1IJEd1YW5vPT0iQWJzZW50IixdDQoNCkRNRyA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE1HIDwtIERNR1tETUckRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkRNRyA8LSBETUdbRE1HJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRNRyA8LSBETUdbRE1HJEd1YW5vPT0iUHJlc2VudCIsXQ0KDQpETUMgPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRNQyA8LSBETUNbRE1DJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpETUMgPC0gRE1DW0RNQyRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KRE1DIDwtIERNQ1tETUMkR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyAgICBMaWdodCBPZmYsIEhpZ2ggRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KREhOPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRITiA8LSBESE5bREhOJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KREhOIDwtIERITltESE4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KREhOIDwtIERITltESE4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KREhMPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRITCA8LSBESExbREhMJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KREhMIDwtIERITFtESEwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkRITCA8LSBESExbREhMJEd1YW5vPT0iQWJzZW50IixdDQoNCkRITTwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpESE0gPC0gREhNW0RITSRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkRITSA8LSBESE1bREhNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpESE0gPC0gREhNW0RITSRHdWFubz09IkFic2VudCIsXQ0KDQpESEg8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREhIIDwtIERISFtESEgkRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpESEggPC0gREhIW0RISCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkRISCA8LSBESEhbREhIJEd1YW5vPT0iQWJzZW50IixdDQoNCkRIRzwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpESEcgPC0gREhHW0RIRyRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkRIRyA8LSBESEdbREhHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRIRyA8LSBESEdbREhHJEd1YW5vPT0iUHJlc2VudCIsXQ0KDQpESEM8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREhDIDwtIERIQ1tESEMkRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpESEMgPC0gREhDW0RIQyRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KREhDIDwtIERIQ1tESEMkR3Vhbm89PSJQcmVzZW50IixdDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQojIyMgICAgTGlnaHQgT2ZmLCBFeHRyZW1lIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KREVOPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRFTiA8LSBERU5bREVOJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KREVOIDwtIERFTltERU4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KREVOIDwtIERFTltERU4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KREVMPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRFTCA8LSBERUxbREVMJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KREVMIDwtIERFTFtERUwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkRFTCA8LSBERUxbREVMJEd1YW5vPT0iQWJzZW50IixdDQoNCkRFTTwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpERU0gPC0gREVNW0RFTSRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkRFTSA8LSBERU1bREVNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpERU0gPC0gREVNW0RFTSRHdWFubz09IkFic2VudCIsXQ0KDQpERUg8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREVIIDwtIERFSFtERUgkRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpERUggPC0gREVIW0RFSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkRFSCA8LSBERUhbREVIJEd1YW5vPT0iQWJzZW50IixdDQoNCkRFRzwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpERUcgPC0gREVHW0RFRyRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkRFRyA8LSBERUdbREVHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRFRyA8LSBERUdbREVHJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCg0KYGBgDQoNCg0KYGBge3J9DQogICMjIyBzZXR0aW5nIGRhdGEgYXMgY2lyY3VsYXINCiMjICAgTGlnaHRzIG9uDQoNCkxOTiA8LSBjaXJjdWxhcihMTk4kdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjYXNzaWduIExOTiBzdWJzZXQgdG8gIkxOTiIgdmFyaWFibGUNCkxOTCA8LSBjaXJjdWxhcihMTkwkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE5MDQpMTk0gPC0gY2lyY3VsYXIoTE5NJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xOTQ0KTE5IIDwtIGNpcmN1bGFyKExOSCR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTkgNCkxORyA8LSBjaXJjdWxhcihMTkckdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE5HDQoNCkxMTiA8LSBjaXJjdWxhcihMTE4kdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTExODQpMTEwgPC0gY2lyY3VsYXIoTExMJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xMTA0KTExNIDwtIGNpcmN1bGFyKExMTSR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTE0NCkxMSCA8LSBjaXJjdWxhcihMTEgkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTExIDQpMTEcgPC0gY2lyY3VsYXIoTExHJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xMRw0KDQpMTU4gPC0gY2lyY3VsYXIoTE1OJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xNTg0KTE1MIDwtIGNpcmN1bGFyKExNTCR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTUwNCkxNTSA8LSBjaXJjdWxhcihMTU0kdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE1NDQpMTUggPC0gY2lyY3VsYXIoTE1IJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xNSA0KTE1HIDwtIGNpcmN1bGFyKExNRyR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTUcNCg0KTEhOIDwtIGNpcmN1bGFyKExITiR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMSE4NCkxITCA8LSBjaXJjdWxhcihMSEwkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEhMDQpMSE0gPC0gY2lyY3VsYXIoTEhNJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xITQ0KTEhIIDwtIGNpcmN1bGFyKExISCR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMSEgNCkxIRyA8LSBjaXJjdWxhcihMSEckdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEhHDQoNCkxFTiA8LSBjaXJjdWxhcihMRU4kdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEVODQpMRUwgPC0gY2lyY3VsYXIoTEVMJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xFTA0KTEVNIDwtIGNpcmN1bGFyKExFTSR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMRU0NCkxFSCA8LSBjaXJjdWxhcihMRUgkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEVIDQpMRUcgPC0gY2lyY3VsYXIoTEVHJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xFRw0KDQojIyMjIyMjIyMjIyMgIExpZ2h0cyBPZmYNCg0KRE5OIDwtIGNpcmN1bGFyKEROTiR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETk4NCkROTCA8LSBjaXJjdWxhcihETkwkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE5MDQpETk0gPC0gY2lyY3VsYXIoRE5NJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0ROTQ0KRE5IIDwtIGNpcmN1bGFyKEROSCR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETkgNCkRORyA8LSBjaXJjdWxhcihETkckdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE5HDQoNCkRMTiA8LSBjaXJjdWxhcihETE4kdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRExODQpETEwgPC0gY2lyY3VsYXIoRExMJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RMTA0KRExNIDwtIGNpcmN1bGFyKERMTSR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETE0NCkRMSCA8LSBjaXJjdWxhcihETEgkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRExIDQpETEcgPC0gY2lyY3VsYXIoRExHJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RMRw0KDQpETU4gPC0gY2lyY3VsYXIoRE1OJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RNTg0KRE1MIDwtIGNpcmN1bGFyKERNTCR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETUwNCkRNTSA8LSBjaXJjdWxhcihETU0kdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE1NDQpETUggPC0gY2lyY3VsYXIoRE1IJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RNSA0KRE1HIDwtIGNpcmN1bGFyKERNRyR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETUcNCg0KREhOIDwtIGNpcmN1bGFyKERITiR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNESE4NCkRITCA8LSBjaXJjdWxhcihESEwkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREhMDQpESE0gPC0gY2lyY3VsYXIoREhNJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RITQ0KREhIIDwtIGNpcmN1bGFyKERISCR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNESEgNCkRIRyA8LSBjaXJjdWxhcihESEckdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREhHDQoNCkRFTiA8LSBjaXJjdWxhcihERU4kdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREVODQpERUwgPC0gY2lyY3VsYXIoREVMJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RFTA0KREVNIDwtIGNpcmN1bGFyKERFTSR0dXJuLmFuZ2xlLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNERU0NCkRFSCA8LSBjaXJjdWxhcihERUgkdHVybi5hbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREVIDQpERUcgPC0gY2lyY3VsYXIoREVHJHR1cm4uYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RFRw0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KI2NoZWNrIHRoYXQgdGhlIGRhdGEgd2FzIHN1YnNldHRlZCBjb3JyZWN0bHkgKHNvdXRoICYgYW1iaWVudCwgdG9vIGlmIGRpZCBhbHJlYWR5KQ0KcHJpbnQoTE5OKQ0KcHJpbnQoTE5MKQ0KcHJpbnQoTE5NKQ0KDQpgYGANCg0KTm93IHRoYXQgZGF0YSBpcyBzdWJzZXR0ZWQsIGZpbmQgdGhlIG1lYW5zLi4uIGFuZCBwbG90IGNpcmN1bGFyIHBsb3Qgd2l0aCBtZWFuIHZlY3Rvcg0KDQpMaWdodHMgT24gZmlyc3QuLi4NCg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT24gTm8gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKExOTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExOTiwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMTk4sIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExOTiwgbmEucm09VFJVRSkgDQpMTk4ubWVhbiA8LSBtZWFuKExOTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTk4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikgICMjIyBsYXJnZXIgc3RhY2sgbnVtYmVyID0gbW9yZSB6b29tZWQgb3V0DQphcnJvd3MuY2lyY3VsYXIoTE5OLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTkwsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMTkwsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTE5MLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMTkwsIG5hLnJtPVRSVUUpIA0KTE5MLm1lYW4gPC0gbWVhbihMTkwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5MLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE5MLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTk0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMTk0sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTE5NLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMTk0sIG5hLnJtPVRSVUUpIA0KTE5NLm1lYW4gPC0gbWVhbihMTk0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE5NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTkgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMTkgsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTE5ILCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMTkgsIG5hLnJtPVRSVUUpIA0KTE5ILm1lYW4gPC0gbWVhbihMTkgsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5ILCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE5ILm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTkcsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMTkcsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTE5HLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMTkcsIG5hLnJtPVRSVUUpIA0KTE5HLm1lYW4gPC0gbWVhbihMTkcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5HLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE5HLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9uIExvdyBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oTExOLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoTExOLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKExMTiwgbmEucm09VFJVRSkNCnN1bW1hcnkoTExOLCBuYS5ybT1UUlVFKSANCkxMTi5tZWFuIDwtIG1lYW4oTExOLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExMTiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExMTi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTExMLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoTExMLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKExMTCwgbmEucm09VFJVRSkNCnN1bW1hcnkoTExMLCBuYS5ybT1UUlVFKSANCkxMTC5tZWFuIDwtIG1lYW4oTExMLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExMTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExMTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTExNLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4NCnZhcihMTE0sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTExNLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMTE0sIG5hLnJtPVRSVUUpIA0KTExNLm1lYW4gPC0gbWVhbihMTE0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTExNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTExNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTEgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbg0KdmFyKExMSCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMTEgsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExMSCwgbmEucm09VFJVRSkgDQpMTEgubWVhbiA8LSBtZWFuKExMSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTEgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTEgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExMRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExMRywgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMTEcsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExMRywgbmEucm09VFJVRSkgDQpMTEcubWVhbiA8LSBtZWFuKExMRywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTEcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTEcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPbiBNZWRpdW0gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKExNTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExNTiwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMTU4sIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExNTiwgbmEucm09VFJVRSkgDQpMTU4ubWVhbiA8LSBtZWFuKExNTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTU4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTU4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExNTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExNTCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMTUwsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExNTCwgbmEucm09VFJVRSkNCkxNTC5tZWFuIDwtIG1lYW4oTE1MLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExNTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExNTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTE1NLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoTE1NLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKExNTSwgbmEucm09VFJVRSkNCnN1bW1hcnkoTE1NLCBuYS5ybT1UUlVFKQ0KTE1NLm1lYW4gPC0gbWVhbihMTU0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE1NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE1NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTUgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMTUgsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTE1ILCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMTUgsIG5hLnJtPVRSVUUpDQpMTUgubWVhbiA8LSBtZWFuKExNSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTUgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTUgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExNRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExNRywgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMTUcsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExNRywgbmEucm09VFJVRSkNCkxNRy5tZWFuIDwtIG1lYW4oTE1HLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExNRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExNRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9uIEhpZ2ggRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKExITiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExITiwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMSE4sIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExITiwgbmEucm09VFJVRSkNCkxITi5tZWFuIDwtIG1lYW4oTEhOLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExITiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExITi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEhMLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoTEhMLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKExITCwgbmEucm09VFJVRSkNCnN1bW1hcnkoTEhMLCBuYS5ybT1UUlVFKQ0KTEhMLm1lYW4gPC0gbWVhbihMSEwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEhMLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEhMLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMSE0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMSE0sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTEhNLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMSE0sIG5hLnJtPVRSVUUpDQpMSE0ubWVhbiA8LSBtZWFuKExITSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMSE0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMSE0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExISCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExISCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMSEgsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExISCwgbmEucm09VFJVRSkNCkxISC5tZWFuIDwtIG1lYW4oTEhILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExISCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExISC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEhHLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoTEhHLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKExIRywgbmEucm09VFJVRSkNCnN1bW1hcnkoTEhHLCBuYS5ybT1UUlVFKQ0KTEhHLm1lYW4gPC0gbWVhbihMSEcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEhHLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEhHLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPbiBFeHRyZW1lIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihMRU4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMRU4sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTEVOLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMRU4sIG5hLnJtPVRSVUUpDQpMRU4ubWVhbiA8LSBtZWFuKExFTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMRU4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMRU4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExFTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExFTCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMRUwsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExFTCwgbmEucm09VFJVRSkNCkxFTC5tZWFuIDwtIG1lYW4oTEVMLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExFTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExFTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEVNLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoTEVNLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKExFTSwgbmEucm09VFJVRSkNCnN1bW1hcnkoTEVNLCBuYS5ybT1UUlVFKQ0KTEVNLm1lYW4gPC0gbWVhbihMRU0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEVNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEVNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMRUgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihMRUgsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oTEVILCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShMRUgsIG5hLnJtPVRSVUUpDQpMRUgubWVhbiA8LSBtZWFuKExFSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMRUgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMRUgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExFRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKExFRywgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihMRUcsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KExFRywgbmEucm09VFJVRSkNCkxFRy5tZWFuIDwtIG1lYW4oTEVHLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExFRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExFRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KYGBgDQpOb3cgZm9yIGxpZ2h0cyBvZmYgQUtBIERhcmsNCg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT2ZmIE5vIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihETk4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbg0KdmFyKEROTiwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihETk4sIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KEROTiwgbmEucm09VFJVRSkNCkROTi5tZWFuIDwtIG1lYW4oRE5OLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKEROTiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KSAgIyMjIGxhcmdlciBzdGFjayBudW1iZXIgPSBtb3JlIHpvb21lZCBvdXQNCmFycm93cy5jaXJjdWxhcihETk4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKEROTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKEROTCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihETkwsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KEROTCwgbmEucm09VFJVRSkNCkROTC5tZWFuIDwtIG1lYW4oRE5MLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKEROTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKEROTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE5NLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoRE5NLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKEROTSwgbmEucm09VFJVRSkNCnN1bW1hcnkoRE5NLCBuYS5ybT1UUlVFKQ0KRE5NLm1lYW4gPC0gbWVhbihETk0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE5NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE5NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETkgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihETkgsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oRE5ILCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShETkgsIG5hLnJtPVRSVUUpDQpETkgubWVhbiA8LSBtZWFuKEROSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETkgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETkgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERORywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERORywgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihETkcsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERORywgbmEucm09VFJVRSkNCkRORy5tZWFuIDwtIG1lYW4oRE5HLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERORywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERORy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPZmYgTG93IEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihETE4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihETE4sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oRExOLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShETE4sIG5hLnJtPVRSVUUpDQpETE4ubWVhbiA8LSBtZWFuKERMTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETE4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETE4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERMTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERMTCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihETEwsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERMTCwgbmEucm09VFJVRSkNCkRMTC5tZWFuIDwtIG1lYW4oRExMLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERMTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERMTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRExNLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoRExNLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKERMTSwgbmEucm09VFJVRSkNCnN1bW1hcnkoRExNLCBuYS5ybT1UUlVFKQ0KRExNLm1lYW4gPC0gbWVhbihETE0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRExNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRExNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETEgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihETEgsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oRExILCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShETEgsIG5hLnJtPVRSVUUpDQpETEgubWVhbiA8LSBtZWFuKERMSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETEgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETEgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERMRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERMRywgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihETEcsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERMRywgbmEucm09VFJVRSkNCkRMRy5tZWFuIDwtIG1lYW4oRExHLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERMRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERMRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9uIE1lZGl1bSBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oRE1OLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4NCnZhcihETU4sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oRE1OLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShETU4sIG5hLnJtPVRSVUUpDQpETU4ubWVhbiA8LSBtZWFuKERNTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETU4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETU4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERNTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERNTCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihETUwsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERNTCwgbmEucm09VFJVRSkNCkRNTC5tZWFuIDwtIG1lYW4oRE1MLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERNTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERNTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE1NLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoRE1NLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKERNTSwgbmEucm09VFJVRSkNCnN1bW1hcnkoRE1NLCBuYS5ybT1UUlVFKQ0KRE1NLm1lYW4gPC0gbWVhbihETU0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE1NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE1NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETUgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihETUgsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oRE1ILCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShETUgsIG5hLnJtPVRSVUUpDQpETUgubWVhbiA8LSBtZWFuKERNSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETUgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETUgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERNRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuDQp2YXIoRE1HLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKERNRywgbmEucm09VFJVRSkNCnN1bW1hcnkoRE1HLCBuYS5ybT1UUlVFKQ0KRE1HLm1lYW4gPC0gbWVhbihETUcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE1HLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE1HLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT2ZmIEhpZ2ggRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKERITiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERITiwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihESE4sIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERITiwgbmEucm09VFJVRSkNCkRITi5tZWFuIDwtIG1lYW4oREhOLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERITiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERITi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREhMLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoREhMLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKERITCwgbmEucm09VFJVRSkNCnN1bW1hcnkoREhMLCBuYS5ybT1UUlVFKQ0KREhMLm1lYW4gPC0gbWVhbihESEwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREhMLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREhMLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihESE0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihESE0sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oREhNLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShESE0sIG5hLnJtPVRSVUUpDQpESE0ubWVhbiA8LSBtZWFuKERITSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihESE0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihESE0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERISCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERISCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihESEgsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERISCwgbmEucm09VFJVRSkNCkRISC5tZWFuIDwtIG1lYW4oREhILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERISCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERISC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREhHLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoREhHLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKERIRywgbmEucm09VFJVRSkNCnN1bW1hcnkoREhHLCBuYS5ybT1UUlVFKQ0KREhHLm1lYW4gPC0gbWVhbihESEcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREhHLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREhHLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9mZiBFeHRyZW1lIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihERU4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihERU4sIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oREVOLCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShERU4sIG5hLnJtPVRSVUUpDQpERU4ubWVhbiA8LSBtZWFuKERFTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihERU4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihERU4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERFTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERFTCwgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihERUwsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERFTCwgbmEucm09VFJVRSkNCkRFTC5tZWFuIDwtIG1lYW4oREVMLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERFTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERFTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREVNLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQp2YXIoREVNLCBuYS5ybSA9IFRSVUUpDQptZWFuZGV2aWF0aW9uKERFTSwgbmEucm09VFJVRSkNCnN1bW1hcnkoREVNLCBuYS5ybT1UUlVFKQ0KREVNLm1lYW4gPC0gbWVhbihERU0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREVNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREVNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihERUgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCnZhcihERUgsIG5hLnJtID0gVFJVRSkNCm1lYW5kZXZpYXRpb24oREVILCBuYS5ybT1UUlVFKQ0Kc3VtbWFyeShERUgsIG5hLnJtPVRSVUUpDQpERUgubWVhbiA8LSBtZWFuKERFSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihERUgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihERUgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERFRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KdmFyKERFRywgbmEucm0gPSBUUlVFKQ0KbWVhbmRldmlhdGlvbihERUcsIG5hLnJtPVRSVUUpDQpzdW1tYXJ5KERFRywgbmEucm09VFJVRSkNCkRFRy5tZWFuIDwtIG1lYW4oREVHLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERFRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERFRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCmBgYA0KDQoNClRlc3QgaWYgbWVhbiB2ZWN0b3JzIGFyZSBzaWduaWZpY2FudGx5IGRpZmZlcmVudC4uLg0KDQpgYGB7cn0NCg0KDQojIyAgQSBSYXlsZWlnaCBUZXN0IGlzIGEgdGVzdCBmb3Igc2lnbmlmaWNhbnQgdW5pbW9kYWwgb3JpZW50YXRpb24gKGUuZy4gSXMgZXZlcnlvbmUgaW4gdGhlIHRyZWF0bWVudCBnb2luZyB0aGUgc2FtZSBkaXJlY3Rpb24/KS4NCg0KcmF5bGVpZ2gudGVzdChMTk4pICAjIyBpZiBzaWduaWZpY2FudCBzaG93cyBub24tdW5pZm9ybWl0eSBvZiBkaXJlY3Rpb24gIChObyBmbG93IHZzIGV4dHJlbWUgZmxvdykNCnJheWxlaWdoLnRlc3QoTEVOKSAgIyMgaWYgc2lnbmlmaWNhbnQgc2hvd3Mgbm9uLXVuaWZvcm1pdHkgb2YgZGlyZWN0aW9uDQoNCiMgVGVzdCB3aGV0aGVyIExOTiBhbmQgTEVOIChldGMpIG9yaWVudCBkaWZmZXJlbnRseSAgDQoNCiMjICBBIFdhdHNvbiBUZXN0IGRldGVybWluZXMgaWYgdHdvIGdyb3Vwc+KAmSBvcmllbnRhdGlvbnMgYXJlIHNpZ25pZmljYW50bHkgZGlmZmVyZW50IGZyb20gZWFjaCBvdGhlci4gDQp3YXRzb24udHdvLnRlc3QoTE5OLCBMRU4pDQoNCmBgYA0KDQpEbyBpdCBhbGwgYWdhaW4gZm9yIGhlYWRpbmdzLi4uLi4NCmBgYHtyfQ0KTE5OPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTk4gPC0gTE5OW0xOTiRGbG93LnJhdGU9PSJObyBGbG93IixdDQpMTk4gPC0gTE5OW0xOTiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMTk4gPC0gTE5OW0xOTiRHdWFubz09IkFic2VudCIsXQ0KDQpMTkw8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxOTCA8LSBMTkxbTE5MJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkxOTCA8LSBMTkxbTE5MJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpMTkwgPC0gTE5MW0xOTCRHdWFubz09IkFic2VudCIsXQ0KDQpMTk08LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxOTSA8LSBMTk1bTE5NJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkxOTSA8LSBMTk1bTE5NJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpMTk0gPC0gTE5NW0xOTSRHdWFubz09IkFic2VudCIsXQ0KDQpMTkg8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxOSCA8LSBMTkhbTE5IJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkxOSCA8LSBMTkhbTE5IJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KTE5IIDwtIExOSFtMTkgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTE5HPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTkcgPC0gTE5HW0xORyRGbG93LnJhdGU9PSJObyBGbG93IixdDQpMTkcgPC0gTE5HW0xORyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMTkcgPC0gTE5HW0xORyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjICAgIExpZ2h0cyBPbiwgTG93IEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkxMTjwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTExOIDwtIExMTltMTE4kRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkxMTiA8LSBMTE5bTExOJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxMTiA8LSBMTE5bTExOJEd1YW5vPT0iQWJzZW50IixdDQoNCkxMTDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTExMIDwtIExMTFtMTEwkRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkxMTCA8LSBMTExbTExMJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpMTEwgPC0gTExMW0xMTCRHdWFubz09IkFic2VudCIsXQ0KDQpMTE08LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxMTSA8LSBMTE1bTExNJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpMTE0gPC0gTExNW0xMTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KTExNIDwtIExMTVtMTE0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTExIPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTEggPC0gTExIW0xMSCRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KTExIIDwtIExMSFtMTEgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMTEggPC0gTExIW0xMSCRHdWFubz09IkFic2VudCIsXQ0KDQpMTEc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxMRyA8LSBMTEdbTExHJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpMTEcgPC0gTExHW0xMRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMTEcgPC0gTExHW0xMRyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyAgICBMaWdodCBPbiwgTWVkaXVtIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpMTU48LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxNTiA8LSBMTU5bTE1OJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpMTU4gPC0gTE1OW0xNTiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMTU4gPC0gTE1OW0xNTiRHdWFubz09IkFic2VudCIsXQ0KDQpMTUw8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxNTCA8LSBMTUxbTE1MJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpMTUwgPC0gTE1MW0xNTCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KTE1MIDwtIExNTFtMTUwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTE1NPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTU0gPC0gTE1NW0xNTSRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KTE1NIDwtIExNTVtMTU0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkxNTSA8LSBMTU1bTE1NJEd1YW5vPT0iQWJzZW50IixdDQoNCkxNSDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE1IIDwtIExNSFtMTUgkRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkxNSCA8LSBMTUhbTE1IJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KTE1IIDwtIExNSFtMTUgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTE1HPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTUcgPC0gTE1HW0xNRyRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KTE1HIDwtIExNR1tMTUckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KTE1HIDwtIExNR1tMTUckR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyAgICBMaWdodCBPbiwgSGlnaCBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkxITjwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEhOIDwtIExITltMSE4kRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpMSE4gPC0gTEhOW0xITiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMSE4gPC0gTEhOW0xITiRHdWFubz09IkFic2VudCIsXQ0KDQpMSEw8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxITCA8LSBMSExbTEhMJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KTEhMIDwtIExITFtMSEwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkxITCA8LSBMSExbTEhMJEd1YW5vPT0iQWJzZW50IixdDQoNCkxITTwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEhNIDwtIExITVtMSE0kRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpMSE0gPC0gTEhNW0xITSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KTEhNIDwtIExITVtMSE0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEhIPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMSEggPC0gTEhIW0xISCRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkxISCA8LSBMSEhbTEhIJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KTEhIIDwtIExISFtMSEgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEhHPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMSEcgPC0gTEhHW0xIRyRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkxIRyA8LSBMSEdbTEhHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxIRyA8LSBMSEdbTEhHJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCiMjIyAgICBMaWdodCBPbiwgRXh0cmVtZSBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkxFTjwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEVOIDwtIExFTltMRU4kRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpMRU4gPC0gTEVOW0xFTiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMRU4gPC0gTEVOW0xFTiRHdWFubz09IkFic2VudCIsXQ0KDQpMRUw8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxFTCA8LSBMRUxbTEVMJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KTEVMIDwtIExFTFtMRUwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkxFTCA8LSBMRUxbTEVMJEd1YW5vPT0iQWJzZW50IixdDQoNCkxFTTwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEVNIDwtIExFTVtMRU0kRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpMRU0gPC0gTEVNW0xFTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KTEVNIDwtIExFTVtMRU0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEVIPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMRUggPC0gTEVIW0xFSCRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkxFSCA8LSBMRUhbTEVIJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KTEVIIDwtIExFSFtMRUgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEVHPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMRUcgPC0gTEVHW0xFRyRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkxFRyA8LSBMRUdbTEVHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxFRyA8LSBMRUdbTEVHJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KICAgIyMgIExpZ2h0IE9mZiwgTk8gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpETk48LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE5OIDwtIEROTltETk4kRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KRE5OIDwtIEROTltETk4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KRE5OIDwtIEROTltETk4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE5MPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkROTCA8LSBETkxbRE5MJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkROTCA8LSBETkxbRE5MJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpETkwgPC0gRE5MW0ROTCRHdWFubz09IkFic2VudCIsXQ0KDQpETk08LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE5NIDwtIEROTVtETk0kRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KRE5NIDwtIEROTVtETk0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkROTSA8LSBETk1bRE5NJEd1YW5vPT0iQWJzZW50IixdDQoNCkROSCA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE5IIDwtIEROSFtETkgkRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KRE5IIDwtIEROSFtETkgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpETkggPC0gRE5IW0ROSCRHdWFubz09IkFic2VudCIsXQ0KDQpETkc8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE5HIDwtIEROR1tETkckRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KRE5HIDwtIEROR1tETkckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KRE5HIDwtIEROR1tETkckR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyAgICBMaWdodHMgT2ZmLCBMb3cgRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KRExOIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETE4gPC0gRExOW0RMTiRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KRExOIDwtIERMTltETE4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KRExOIDwtIERMTltETE4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KRExMIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETEwgPC0gRExMW0RMTCRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KRExMIDwtIERMTFtETEwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkRMTCA8LSBETExbRExMJEd1YW5vPT0iQWJzZW50IixdDQoNCkRMTSA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRExNIDwtIERMTVtETE0kRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkRMTSA8LSBETE1bRExNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpETE0gPC0gRExNW0RMTSRHdWFubz09IkFic2VudCIsXQ0KDQpETEggPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRMSCA8LSBETEhbRExIJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpETEggPC0gRExIW0RMSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkRMSCA8LSBETEhbRExIJEd1YW5vPT0iQWJzZW50IixdDQoNCkRMRyA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRExHIDwtIERMR1tETEckRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkRMRyA8LSBETEdbRExHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRMRyA8LSBETEdbRExHJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjICAgIExpZ2h0IE9mZiwgTWVkaXVtIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpETU4gPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRNTiA8LSBETU5bRE1OJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpETU4gPC0gRE1OW0RNTiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpETU4gPC0gRE1OW0RNTiRHdWFubz09IkFic2VudCIsXQ0KDQpETUwgPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRNTCA8LSBETUxbRE1MJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpETUwgPC0gRE1MW0RNTCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KRE1MIDwtIERNTFtETUwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE1NIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETU0gPC0gRE1NW0RNTSRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KRE1NIDwtIERNTVtETU0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkRNTSA8LSBETU1bRE1NJEd1YW5vPT0iQWJzZW50IixdDQoNCkRNSCA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE1IIDwtIERNSFtETUgkRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkRNSCA8LSBETUhbRE1IJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KRE1IIDwtIERNSFtETUgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE1HIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETUcgPC0gRE1HW0RNRyRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KRE1HIDwtIERNR1tETUckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KRE1HIDwtIERNR1tETUckR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyAgICBMaWdodCBPZmYsIEhpZ2ggRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpESE48LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREhOIDwtIERITltESE4kRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpESE4gPC0gREhOW0RITiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpESE4gPC0gREhOW0RITiRHdWFubz09IkFic2VudCIsXQ0KDQpESEw8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREhMIDwtIERITFtESEwkRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpESEwgPC0gREhMW0RITCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KREhMIDwtIERITFtESEwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KREhNPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRITSA8LSBESE1bREhNJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KREhNIDwtIERITVtESE0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkRITSA8LSBESE1bREhNJEd1YW5vPT0iQWJzZW50IixdDQoNCkRISDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpESEggPC0gREhIW0RISCRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkRISCA8LSBESEhbREhIJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KREhIIDwtIERISFtESEgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KREhHPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRIRyA8LSBESEdbREhHJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KREhHIDwtIERIR1tESEckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KREhHIDwtIERIR1tESEckR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KIyMjICAgIExpZ2h0IE9mZiwgRXh0cmVtZSBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkRFTjwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpERU4gPC0gREVOW0RFTiRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkRFTiA8LSBERU5bREVOJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRFTiA8LSBERU5bREVOJEd1YW5vPT0iQWJzZW50IixdDQoNCkRFTDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpERUwgPC0gREVMW0RFTCRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkRFTCA8LSBERUxbREVMJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpERUwgPC0gREVMW0RFTCRHdWFubz09IkFic2VudCIsXQ0KDQpERU08LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREVNIDwtIERFTVtERU0kRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpERU0gPC0gREVNW0RFTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KREVNIDwtIERFTVtERU0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KREVIPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRFSCA8LSBERUhbREVIJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KREVIIDwtIERFSFtERUgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpERUggPC0gREVIW0RFSCRHdWFubz09IkFic2VudCIsXQ0KDQpERUc8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREVHIDwtIERFR1tERUckRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpERUcgPC0gREVHW0RFRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpERUcgPC0gREVHW0RFRyRHdWFubz09IlByZXNlbnQiLF0NCg0KYGBgDQpSdW4gTG9vcCBmb3IgZWFjaCBzZXQgb2YgY29uZGl0aW9ucw0KDQpCZWxvdyBzZWN0aW9uIGhhcyBybSBmb3IgY29uZGl0aW9ucyBhbmQgZHJvcGxldmVscyBmb3IgZmFjdG9ycyBhdCBlbmQNCg0KYGBge3J9DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyNSdW4gTG9vcCBmb3IgZWFjaCBzZXQgb2YgY29uZGl0aW9ucw0KDQpMTEwgPC0gZHJvcGxldmVscyhMTEwpDQpzdHIoTExMKQ0KDQpsaWJyYXJ5KGRwbHlyKQ0KTExMX2NhbGN1bGF0ZSA8LSBkYXRhLmZyYW1lKCkNCmZvciAoZHZ0IGluIHVuaXF1ZShMTEwkRF9WX1QpKSB7DQogIGRhdGEgPC0gTExMICU+JSBzdWJzZXQoRF9WX1Q9PWR2dCkNCiAgZm9yIChpIGluIDI6bnJvdyhkYXRhKSkgew0KICAgIHN1YmRhdGEgPC0gZGF0YVsoKGktMSk6aSksXQ0KICAgIHJlbF9wb2ludF94IDwtIHN1YmRhdGFbMSwiWCJdDQogICAgcmVsX3BvaW50X3kgPC0gc3ViZGF0YVsxLCJZIl0NCiAgICBjYWxfcG9pbnRfeCA8LSBzdWJkYXRhWzIsIlgiXQ0KICAgIGNhbF9wb2ludF95IDwtIHN1YmRhdGFbMiwiWSJdDQogICAgc2xvcGUgPC0gKGNhbF9wb2ludF95LSByZWxfcG9pbnRfeSkvKGNhbF9wb2ludF94LSByZWxfcG9pbnRfeCkNCiAgICBhbmdsZSA8LSBhdGFuKHNsb3BlKSozNjAvcGkNCiAgICB0bXAgPC0gZGF0YS5mcmFtZShEX1ZfVD1kdnQsaSxyZWxfcG9pbnRfeCxyZWxfcG9pbnRfeSxjYWxfcG9pbnRfeCxjYWxfcG9pbnRfeSxzbG9wZSxhbmdsZSkNCiAgICBMTExfY2FsY3VsYXRlIDwtIHJiaW5kKExMTF9jYWxjdWxhdGUsdG1wKQ0KICB9DQogIHByaW50KGR2dCkNCn0NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpsaWJyYXJ5KGNpcmN1bGFyKQ0KTE5IX2NhbGN1bGF0ZS5kZWcgPC0gY2lyY3VsYXIoTE5IX2NhbGN1bGF0ZSRhbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZSA9Imdlb2dyYXBoaWNzIikNCkxOSF9jYWxjdWxhdGUucmFkIDwtIExOSF9jYWxjdWxhdGUuZGVnKnBpLzE4MCAgICMjIGNvbnZlcnRzIHRvIHJhZGlhbnMNCkxOSF9jYWxjdWxhdGUubWVhbiA8LSBtZWFuKExOSF9jYWxjdWxhdGUuZGVnLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpMTkhfY2FsY3VsYXRlLm1lYW4gICMjKjE4MC9waQ0KDQpwbG90LmNpcmN1bGFyKERFTl9jYWxjdWxhdGUuZGVnLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAzLjYpICAjIyMgbGFyZ2VyIHN0YWNrIG51bWJlciA9IG1vcmUgem9vbWVkIG91dA0KYXJyb3dzLmNpcmN1bGFyKERFTl9jYWxjdWxhdGUubWVhbi0xODApICNhZGQgbWVhbiB0byBwbG90IGluIGRlZ3JlZXMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMgKjE4MC9waQ0KIyMgKnBpLzE4MCAgICAgICAgICAgICAgICAgICAgIA0KIyNoZWFkKERFTl9jYWxjdWxhdGUpDQojI0RFTl9jYWxjdWxhdGUgPC0gREVOX2NhbGN1bGF0ZSoxODAvcGkgICAjIyBjb252ZXJ0cyBiYWNrIHRvIGRlZ3JlZXMNCiMjbWVhbihERU5fY2FsY3VsYXRlLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQoNCiMjLTAuMDE0NTg5MjYqMTgwL3BpICAjIyBjb252ZXJ0cyBiYWNrIHRvIGRlZ3JlZXMNCg0KIyMgc3RpbGwgaW4gcmFkaWFucyBiZWxvdw0KIyN2YXIoREVOX2NhbGN1bGF0ZSwgbmEucm0gPSBUUlVFKQ0KIyNtZWFuZGV2aWF0aW9uKERFTl9jYWxjdWxhdGUsIG5hLnJtPVRSVUUpDQojI3N1bW1hcnkoREVOX2NhbGN1bGF0ZSkNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyAgU2F2ZSBtZWFuIGhlYWRpbmdzIGZvciBlYWNoIHNldCBvZiBjb25kaXRpb25zDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQpybShERUcsIERFSCwgREVNLCBESEgsIERITiwgRExHLCBETEgsIERMTCwgRExNLCBETUcsIERNTiwgRE5HLCBETkwsIExFRywgTEVILCBMSEgpDQojI3JtKEQsIGQxLCBkMiwgZGQsIGRvdHByb2QsIGRvdHksIGRvdHgsIGRvdHosIGR4MSwgZHgyLCBkeTEsIGR5MiwgZHoxLCBkejIsIGxpc3QyLCBsaXN0MywgbGlzdDQsIGxpc3Q1LCBsdGgsIHNtb290aHgxLCBzbW9vdGh4Miwgc21vb3RoeTEsIHNtb290aHkyKQ0KIyNybShzbW9vdGh6MSwgc21vb3RoejIsIHYxLCB2MiwgdngxLCB2eDIsIHZ5MSwgdnkyLCB2ejEsIHZ6MiwgeDEsIHgyLCB5MSwgeTIsIHoxLCB6MikNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KTEhOIDwtIGRyb3BsZXZlbHMoTEhOKQ0Kc3RyKExITikNCg0Kc2F2ZS5pbWFnZSgifi9Qb3N0LWRvYy9EYXRhL1RvdGFsIE1lcmdlZCBEYXRhIEZpbGUgKFNlcCA2IDIwMjMpLlJEYXRhIikNCg0KYGBgDQoNCkFib3ZlIHNlY3Rpb24gaGFzIHJtIGZvciBjb25kaXRpb25zIGFuZCBkcm9wbGV2ZWxzIGZvciBmYWN0b3JzIGF0IGVuZA0KDQpgYGB7cn0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICMjIyBzZXR0aW5nIGRhdGEgYXMgY2lyY3VsYXINCiMjICAgTGlnaHRzIG9uDQoNCmhlYWQoTE5OKQ0KDQpMTk4gPC0gY2lyY3VsYXIoTE5OJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI2Fzc2lnbiBMTk4gc3Vic2V0IHRvICJMTk4iIHZhcmlhYmxlDQpMTkwgPC0gY2lyY3VsYXIoTE5MJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xOTA0KTE5NIDwtIGNpcmN1bGFyKExOTSRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTk0NCkxOSCA8LSBjaXJjdWxhcihMTkgkaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE5IDQpMTkcgPC0gY2lyY3VsYXIoTE5HJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xORw0KDQpMTE4gPC0gY2lyY3VsYXIoTExOJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xMTg0KTExMIDwtIGNpcmN1bGFyKExMTCRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTEwNCkxMTSA8LSBjaXJjdWxhcihMTE0kaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTExNDQpMTEggPC0gY2lyY3VsYXIoTExIJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xMSA0KTExHIDwtIGNpcmN1bGFyKExMRyRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTEcNCg0KTE1OIDwtIGNpcmN1bGFyKExNTiRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTU4NCkxNTCA8LSBjaXJjdWxhcihMTUwkaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE1MDQpMTU0gPC0gY2lyY3VsYXIoTE1NJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xNTQ0KTE1IIDwtIGNpcmN1bGFyKExNSCRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTUgNCkxNRyA8LSBjaXJjdWxhcihMTUckaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE1HDQoNCkxITiA8LSBjaXJjdWxhcihMSE4kaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEhODQpMSEwgPC0gY2lyY3VsYXIoTEhMJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xITA0KTEhNIDwtIGNpcmN1bGFyKExITSRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMSE0NCkxISCA8LSBjaXJjdWxhcihMSEgkaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEhIDQpMSEcgPC0gY2lyY3VsYXIoTEhHJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xIRw0KDQpMRU4gPC0gY2lyY3VsYXIoTEVOJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xFTg0KTEVMIDwtIGNpcmN1bGFyKExFTCRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMRUwNCkxFTSA8LSBjaXJjdWxhcihMRU0kaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEVNDQpMRUggPC0gY2lyY3VsYXIoTEVIJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xFSA0KTEVHIDwtIGNpcmN1bGFyKExFRyRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMRUcNCg0KIyMjIyMjIyMjIyMjICBMaWdodHMgT2ZmDQoNCkROTiA8LSBjaXJjdWxhcihETk4kaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE5ODQpETkwgPC0gY2lyY3VsYXIoRE5MJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0ROTA0KRE5NIDwtIGNpcmN1bGFyKEROTSRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETk0NCkROSCA8LSBjaXJjdWxhcihETkgkaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE5IDQpETkcgPC0gY2lyY3VsYXIoRE5HJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RORw0KDQpETE4gPC0gY2lyY3VsYXIoRExOJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RMTg0KRExMIDwtIGNpcmN1bGFyKERMTCRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETEwNCkRMTSA8LSBjaXJjdWxhcihETE0kaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRExNDQpETEggPC0gY2lyY3VsYXIoRExIJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RMSA0KRExHIDwtIGNpcmN1bGFyKERMRyRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETEcNCg0KRE1OIDwtIGNpcmN1bGFyKERNTiRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETU4NCkRNTCA8LSBjaXJjdWxhcihETUwkaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE1MDQpETU0gPC0gY2lyY3VsYXIoRE1NJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RNTQ0KRE1IIDwtIGNpcmN1bGFyKERNSCRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETUgNCkRNRyA8LSBjaXJjdWxhcihETUckaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE1HDQoNCkRITiA8LSBjaXJjdWxhcihESE4kaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREhODQpESEwgPC0gY2lyY3VsYXIoREhMJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RITA0KREhNIDwtIGNpcmN1bGFyKERITSRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNESE0NCkRISCA8LSBjaXJjdWxhcihESEgkaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREhIDQpESEcgPC0gY2lyY3VsYXIoREhHJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RIRw0KDQpERU4gPC0gY2lyY3VsYXIoREVOJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RFTg0KREVMIDwtIGNpcmN1bGFyKERFTCRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNERUwNCkRFTSA8LSBjaXJjdWxhcihERU0kaGVhZGluZy5waSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREVNDQpERUggPC0gY2lyY3VsYXIoREVIJGhlYWRpbmcucGksIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RFSA0KREVHIDwtIGNpcmN1bGFyKERFRyRoZWFkaW5nLnBpLCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNERUcNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCmBgYA0KDQoNCmBgYHtyfQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihMTk4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxOTi5tZWFuIDwtIG1lYW4oTE5OLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExOTiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KSAgIyMjIGxhcmdlciBzdGFjayBudW1iZXIgPSBtb3JlIHpvb21lZCBvdXQNCmFycm93cy5jaXJjdWxhcihMTk4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExOTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTE5MLm1lYW4gPC0gbWVhbihMTkwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5MLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE5MLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTk0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxOTS5tZWFuIDwtIG1lYW4oTE5NLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExOTSwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExOTS5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTE5ILCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTkgubWVhbiA8LSBtZWFuKExOSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTkgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTkgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExORywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTE5HLm1lYW4gPC0gbWVhbihMTkcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5HLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE5HLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9uIExvdyBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oTExOLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTE4ubWVhbiA8LSBtZWFuKExMTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTE4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTE4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExMTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTExMLm1lYW4gPC0gbWVhbihMTEwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTExMLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTExMLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTE0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxMTS5tZWFuIDwtIG1lYW4oTExNLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExMTSwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExMTS5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTExILCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTEgubWVhbiA8LSBtZWFuKExMSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTEgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTEgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExMRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTExHLm1lYW4gPC0gbWVhbihMTEcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTExHLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTExHLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT24gTWVkaXVtIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihMTU4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxNTi5tZWFuIDwtIG1lYW4oTE1OLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExNTiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExNTi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTE1MLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTUwubWVhbiA8LSBtZWFuKExNTCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTUwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTUwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExNTSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTE1NLm1lYW4gPC0gbWVhbihMTU0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE1NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE1NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTUgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxNSC5tZWFuIDwtIG1lYW4oTE1ILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExNSCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExNSC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTE1HLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTUcubWVhbiA8LSBtZWFuKExNRywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTUcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTUcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPbiBIaWdoIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihMSE4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxITi5tZWFuIDwtIG1lYW4oTEhOLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExITiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExITi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEhMLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMSEwubWVhbiA8LSBtZWFuKExITCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMSEwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMSEwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExITSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTEhNLm1lYW4gPC0gbWVhbihMSE0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEhNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEhNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMSEgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxISC5tZWFuIDwtIG1lYW4oTEhILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExISCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExISC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEhHLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMSEcubWVhbiA8LSBtZWFuKExIRywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMSEcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMSEcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9uIEV4dHJlbWUgRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKExFTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTEVOLm1lYW4gPC0gbWVhbihMRU4sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEVOLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEVOLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMRUwsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxFTC5tZWFuIDwtIG1lYW4oTEVMLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExFTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExFTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEVNLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMRU0ubWVhbiA8LSBtZWFuKExFTSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMRU0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMRU0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExFSCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTEVILm1lYW4gPC0gbWVhbihMRUgsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEVILCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEVILm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMRUcsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxFRy5tZWFuIDwtIG1lYW4oTEVHLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExFRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExFRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPZmYgTm8gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKEROTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRE5OLm1lYW4gPC0gbWVhbihETk4sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE5OLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpICAjIyMgbGFyZ2VyIHN0YWNrIG51bWJlciA9IG1vcmUgem9vbWVkIG91dA0KYXJyb3dzLmNpcmN1bGFyKEROTi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE5MLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETkwubWVhbiA8LSBtZWFuKEROTCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETkwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETkwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKEROTSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRE5NLm1lYW4gPC0gbWVhbihETk0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE5NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE5NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETkgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkROSC5tZWFuIDwtIG1lYW4oRE5ILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKEROSCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKEROSC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE5HLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETkcubWVhbiA8LSBtZWFuKERORywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETkcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETkcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT2ZmIExvdyBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oRExOLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETE4ubWVhbiA8LSBtZWFuKERMTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETE4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETE4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERMTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRExMLm1lYW4gPC0gbWVhbihETEwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRExMLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRExMLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETE0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRMTS5tZWFuIDwtIG1lYW4oRExNLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERMTSwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERMTS5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRExILCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETEgubWVhbiA8LSBtZWFuKERMSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETEgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETEgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERMRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRExHLm1lYW4gPC0gbWVhbihETEcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRExHLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRExHLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT24gTWVkaXVtIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihETU4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRNTi5tZWFuIDwtIG1lYW4oRE1OLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERNTiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERNTi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE1MLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETUwubWVhbiA8LSBtZWFuKERNTCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETUwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETUwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERNTSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRE1NLm1lYW4gPC0gbWVhbihETU0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE1NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE1NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETUgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRNSC5tZWFuIDwtIG1lYW4oRE1ILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERNSCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERNSC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE1HLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETUcubWVhbiA8LSBtZWFuKERNRywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETUcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETUcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPZmYgSGlnaCBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oREhOLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpESE4ubWVhbiA8LSBtZWFuKERITiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihESE4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihESE4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERITCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KREhMLm1lYW4gPC0gbWVhbihESEwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREhMLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREhMLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihESE0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRITS5tZWFuIDwtIG1lYW4oREhNLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERITSwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERITS5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREhILCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpESEgubWVhbiA8LSBtZWFuKERISCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihESEgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihESEgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERIRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KREhHLm1lYW4gPC0gbWVhbihESEcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREhHLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREhHLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9uIEV4dHJlbWUgRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKERFTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KREVOLm1lYW4gPC0gbWVhbihERU4sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREVOLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREVOLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihERUwsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRFTC5tZWFuIDwtIG1lYW4oREVMLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERFTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERFTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREVNLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpERU0ubWVhbiA8LSBtZWFuKERFTSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihERU0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihERU0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERFSCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KREVILm1lYW4gPC0gbWVhbihERUgsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREVILCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREVILm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihERUcsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRFRy5tZWFuIDwtIG1lYW4oREVHLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERFRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KSAgIyMjIGxhcmdlciBzdGFjayBudW1iZXIgPSBtb3JlIHpvb21lZCBvdXQNCmFycm93cy5jaXJjdWxhcihERUcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KYGBgDQoNCmFuZCBwaXRjaC4uLi4uLg0KYGBge3J9DQpMTk48LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxOTiA8LSBMTk5bTE5OJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkxOTiA8LSBMTk5bTE5OJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxOTiA8LSBMTk5bTE5OJEd1YW5vPT0iQWJzZW50IixdDQoNCkxOTDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE5MIDwtIExOTFtMTkwkRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KTE5MIDwtIExOTFtMTkwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkxOTCA8LSBMTkxbTE5MJEd1YW5vPT0iQWJzZW50IixdDQoNCkxOTTwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE5NIDwtIExOTVtMTk0kRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KTE5NIDwtIExOTVtMTk0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkxOTSA8LSBMTk1bTE5NJEd1YW5vPT0iQWJzZW50IixdDQoNCkxOSDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE5IIDwtIExOSFtMTkgkRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KTE5IIDwtIExOSFtMTkgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMTkggPC0gTE5IW0xOSCRHdWFubz09IkFic2VudCIsXQ0KDQpMTkc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxORyA8LSBMTkdbTE5HJEZsb3cucmF0ZT09Ik5vIEZsb3ciLF0NCkxORyA8LSBMTkdbTE5HJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxORyA8LSBMTkdbTE5HJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMgICAgTGlnaHRzIE9uLCBMb3cgRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KTExOPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTE4gPC0gTExOW0xMTiRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KTExOIDwtIExMTltMTE4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KTExOIDwtIExMTltMTE4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTExMPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTEwgPC0gTExMW0xMTCRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KTExMIDwtIExMTFtMTEwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkxMTCA8LSBMTExbTExMJEd1YW5vPT0iQWJzZW50IixdDQoNCkxMTTwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTExNIDwtIExMTVtMTE0kRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkxMTSA8LSBMTE1bTExNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpMTE0gPC0gTExNW0xMTSRHdWFubz09IkFic2VudCIsXQ0KDQpMTEg8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxMSCA8LSBMTEhbTExIJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpMTEggPC0gTExIW0xMSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkxMSCA8LSBMTEhbTExIJEd1YW5vPT0iQWJzZW50IixdDQoNCkxMRzwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTExHIDwtIExMR1tMTEckRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkxMRyA8LSBMTEdbTExHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxMRyA8LSBMTEdbTExHJEd1YW5vPT0iUHJlc2VudCIsXQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjICAgIExpZ2h0IE9uLCBNZWRpdW0gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkxNTjwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE1OIDwtIExNTltMTU4kRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkxNTiA8LSBMTU5bTE1OJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxNTiA8LSBMTU5bTE1OJEd1YW5vPT0iQWJzZW50IixdDQoNCkxNTDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTE1MIDwtIExNTFtMTUwkRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkxNTCA8LSBMTUxbTE1MJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpMTUwgPC0gTE1MW0xNTCRHdWFubz09IkFic2VudCIsXQ0KDQpMTU08LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxNTSA8LSBMTU1bTE1NJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpMTU0gPC0gTE1NW0xNTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KTE1NIDwtIExNTVtMTU0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KTE1IPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMTUggPC0gTE1IW0xNSCRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KTE1IIDwtIExNSFtMTUgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMTUggPC0gTE1IW0xNSCRHdWFubz09IkFic2VudCIsXQ0KDQpMTUc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxNRyA8LSBMTUdbTE1HJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpMTUcgPC0gTE1HW0xNRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpMTUcgPC0gTE1HW0xNRyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjICAgIExpZ2h0IE9uLCBIaWdoIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KTEhOPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMSE4gPC0gTEhOW0xITiRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkxITiA8LSBMSE5bTEhOJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxITiA8LSBMSE5bTEhOJEd1YW5vPT0iQWJzZW50IixdDQoNCkxITDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEhMIDwtIExITFtMSEwkRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpMSEwgPC0gTEhMW0xITCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KTEhMIDwtIExITFtMSEwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEhNPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMSE0gPC0gTEhNW0xITSRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkxITSA8LSBMSE1bTEhNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpMSE0gPC0gTEhNW0xITSRHdWFubz09IkFic2VudCIsXQ0KDQpMSEg8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxISCA8LSBMSEhbTEhIJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KTEhIIDwtIExISFtMSEgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMSEggPC0gTEhIW0xISCRHdWFubz09IkFic2VudCIsXQ0KDQpMSEc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxIRyA8LSBMSEdbTEhHJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KTEhHIDwtIExIR1tMSEckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KTEhHIDwtIExIR1tMSEckR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KIyMjICAgIExpZ2h0IE9uLCBFeHRyZW1lIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KTEVOPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMRU4gPC0gTEVOW0xFTiRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkxFTiA8LSBMRU5bTEVOJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkxFTiA8LSBMRU5bTEVOJEd1YW5vPT0iQWJzZW50IixdDQoNCkxFTDwtZGF0YVtkYXRhJExpZ2h0PT0iUHJlc2VudCIsXQ0KTEVMIDwtIExFTFtMRUwkRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpMRUwgPC0gTEVMW0xFTCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KTEVMIDwtIExFTFtMRUwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KTEVNPC1kYXRhW2RhdGEkTGlnaHQ9PSJQcmVzZW50IixdDQpMRU0gPC0gTEVNW0xFTSRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkxFTSA8LSBMRU1bTEVNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpMRU0gPC0gTEVNW0xFTSRHdWFubz09IkFic2VudCIsXQ0KDQpMRUg8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxFSCA8LSBMRUhbTEVIJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KTEVIIDwtIExFSFtMRUgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpMRUggPC0gTEVIW0xFSCRHdWFubz09IkFic2VudCIsXQ0KDQpMRUc8LWRhdGFbZGF0YSRMaWdodD09IlByZXNlbnQiLF0NCkxFRyA8LSBMRUdbTEVHJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KTEVHIDwtIExFR1tMRUckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KTEVHIDwtIExFR1tMRUckR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQogICAjIyAgTGlnaHQgT2ZmLCBOTyBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkROTjwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETk4gPC0gRE5OW0ROTiRGbG93LnJhdGU9PSJObyBGbG93IixdDQpETk4gPC0gRE5OW0ROTiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpETk4gPC0gRE5OW0ROTiRHdWFubz09IkFic2VudCIsXQ0KDQpETkw8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE5MIDwtIEROTFtETkwkRmxvdy5yYXRlPT0iTm8gRmxvdyIsXQ0KRE5MIDwtIEROTFtETkwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkROTCA8LSBETkxbRE5MJEd1YW5vPT0iQWJzZW50IixdDQoNCkROTTwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETk0gPC0gRE5NW0ROTSRGbG93LnJhdGU9PSJObyBGbG93IixdDQpETk0gPC0gRE5NW0ROTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KRE5NIDwtIEROTVtETk0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE5IIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETkggPC0gRE5IW0ROSCRGbG93LnJhdGU9PSJObyBGbG93IixdDQpETkggPC0gRE5IW0ROSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkROSCA8LSBETkhbRE5IJEd1YW5vPT0iQWJzZW50IixdDQoNCkRORzwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETkcgPC0gRE5HW0RORyRGbG93LnJhdGU9PSJObyBGbG93IixdDQpETkcgPC0gRE5HW0RORyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpETkcgPC0gRE5HW0RORyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjICAgIExpZ2h0cyBPZmYsIExvdyBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQpETE4gPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRMTiA8LSBETE5bRExOJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpETE4gPC0gRExOW0RMTiRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpETE4gPC0gRExOW0RMTiRHdWFubz09IkFic2VudCIsXQ0KDQpETEwgPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRMTCA8LSBETExbRExMJEZsb3cucmF0ZT09IkxvdyBGbG93IixdDQpETEwgPC0gRExMW0RMTCRDaGxvcm9waHlsbD09IkxvdyBDaGxvcm9waHlsbCIsXQ0KRExMIDwtIERMTFtETEwkR3Vhbm89PSJBYnNlbnQiLF0NCg0KRExNIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETE0gPC0gRExNW0RMTSRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KRExNIDwtIERMTVtETE0kQ2hsb3JvcGh5bGw9PSJNZWRpdW0gQ2hsb3JvcGh5bGwiLF0NCkRMTSA8LSBETE1bRExNJEd1YW5vPT0iQWJzZW50IixdDQoNCkRMSCA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRExIIDwtIERMSFtETEgkRmxvdy5yYXRlPT0iTG93IEZsb3ciLF0NCkRMSCA8LSBETEhbRExIJENobG9yb3BoeWxsPT0iSGlnaCBDaGxvcm9waHlsbCIsXQ0KRExIIDwtIERMSFtETEgkR3Vhbm89PSJBYnNlbnQiLF0NCg0KRExHIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETEcgPC0gRExHW0RMRyRGbG93LnJhdGU9PSJMb3cgRmxvdyIsXQ0KRExHIDwtIERMR1tETEckQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KRExHIDwtIERMR1tETEckR3Vhbm89PSJQcmVzZW50IixdDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMgICAgTGlnaHQgT2ZmLCBNZWRpdW0gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkRNTiA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE1OIDwtIERNTltETU4kRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkRNTiA8LSBETU5bRE1OJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRNTiA8LSBETU5bRE1OJEd1YW5vPT0iQWJzZW50IixdDQoNCkRNTCA8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KRE1MIDwtIERNTFtETUwkRmxvdy5yYXRlPT0iTWVkaXVtIEZsb3ciLF0NCkRNTCA8LSBETUxbRE1MJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpETUwgPC0gRE1MW0RNTCRHdWFubz09IkFic2VudCIsXQ0KDQpETU0gPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRNTSA8LSBETU1bRE1NJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpETU0gPC0gRE1NW0RNTSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KRE1NIDwtIERNTVtETU0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KRE1IIDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpETUggPC0gRE1IW0RNSCRGbG93LnJhdGU9PSJNZWRpdW0gRmxvdyIsXQ0KRE1IIDwtIERNSFtETUgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpETUggPC0gRE1IW0RNSCRHdWFubz09IkFic2VudCIsXQ0KDQpETUcgPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRNRyA8LSBETUdbRE1HJEZsb3cucmF0ZT09Ik1lZGl1bSBGbG93IixdDQpETUcgPC0gRE1HW0RNRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpETUcgPC0gRE1HW0RNRyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjICAgIExpZ2h0IE9mZiwgSGlnaCBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCkRITjwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpESE4gPC0gREhOW0RITiRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkRITiA8LSBESE5bREhOJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRITiA8LSBESE5bREhOJEd1YW5vPT0iQWJzZW50IixdDQoNCkRITDwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpESEwgPC0gREhMW0RITCRGbG93LnJhdGU9PSJIaWdoIEZsb3ciLF0NCkRITCA8LSBESExbREhMJENobG9yb3BoeWxsPT0iTG93IENobG9yb3BoeWxsIixdDQpESEwgPC0gREhMW0RITCRHdWFubz09IkFic2VudCIsXQ0KDQpESE08LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREhNIDwtIERITVtESE0kRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpESE0gPC0gREhNW0RITSRDaGxvcm9waHlsbD09Ik1lZGl1bSBDaGxvcm9waHlsbCIsXQ0KREhNIDwtIERITVtESE0kR3Vhbm89PSJBYnNlbnQiLF0NCg0KREhIPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRISCA8LSBESEhbREhIJEZsb3cucmF0ZT09IkhpZ2ggRmxvdyIsXQ0KREhIIDwtIERISFtESEgkQ2hsb3JvcGh5bGw9PSJIaWdoIENobG9yb3BoeWxsIixdDQpESEggPC0gREhIW0RISCRHdWFubz09IkFic2VudCIsXQ0KDQpESEc8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREhHIDwtIERIR1tESEckRmxvdy5yYXRlPT0iSGlnaCBGbG93IixdDQpESEcgPC0gREhHW0RIRyRDaGxvcm9waHlsbD09Ik5vIENobG9yb3BoeWxsIixdDQpESEcgPC0gREhHW0RIRyRHdWFubz09IlByZXNlbnQiLF0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KDQojIyMgICAgTGlnaHQgT2ZmLCBFeHRyZW1lIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KREVOPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRFTiA8LSBERU5bREVOJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KREVOIDwtIERFTltERU4kQ2hsb3JvcGh5bGw9PSJObyBDaGxvcm9waHlsbCIsXQ0KREVOIDwtIERFTltERU4kR3Vhbm89PSJBYnNlbnQiLF0NCg0KREVMPC1kYXRhW2RhdGEkTGlnaHQ9PSJBYnNlbnQiLF0NCkRFTCA8LSBERUxbREVMJEZsb3cucmF0ZT09IkV4dHJlbWUgRmxvdyIsXQ0KREVMIDwtIERFTFtERUwkQ2hsb3JvcGh5bGw9PSJMb3cgQ2hsb3JvcGh5bGwiLF0NCkRFTCA8LSBERUxbREVMJEd1YW5vPT0iQWJzZW50IixdDQoNCkRFTTwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpERU0gPC0gREVNW0RFTSRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkRFTSA8LSBERU1bREVNJENobG9yb3BoeWxsPT0iTWVkaXVtIENobG9yb3BoeWxsIixdDQpERU0gPC0gREVNW0RFTSRHdWFubz09IkFic2VudCIsXQ0KDQpERUg8LWRhdGFbZGF0YSRMaWdodD09IkFic2VudCIsXQ0KREVIIDwtIERFSFtERUgkRmxvdy5yYXRlPT0iRXh0cmVtZSBGbG93IixdDQpERUggPC0gREVIW0RFSCRDaGxvcm9waHlsbD09IkhpZ2ggQ2hsb3JvcGh5bGwiLF0NCkRFSCA8LSBERUhbREVIJEd1YW5vPT0iQWJzZW50IixdDQoNCkRFRzwtZGF0YVtkYXRhJExpZ2h0PT0iQWJzZW50IixdDQpERUcgPC0gREVHW0RFRyRGbG93LnJhdGU9PSJFeHRyZW1lIEZsb3ciLF0NCkRFRyA8LSBERUdbREVHJENobG9yb3BoeWxsPT0iTm8gQ2hsb3JvcGh5bGwiLF0NCkRFRyA8LSBERUdbREVHJEd1YW5vPT0iUHJlc2VudCIsXQ0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAjIyMgc2V0dGluZyBkYXRhIGFzIGNpcmN1bGFyDQojIyAgIExpZ2h0cyBvbg0KDQpoZWFkKExOTikNCg0KTE5OIDwtIGNpcmN1bGFyKExOTiRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNhc3NpZ24gTE5OIHN1YnNldCB0byAiTE5OIiB2YXJpYWJsZQ0KTE5MIDwtIGNpcmN1bGFyKExOTCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTkwNCkxOTSA8LSBjaXJjdWxhcihMTk0kcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE5NDQpMTkggPC0gY2lyY3VsYXIoTE5IJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xOSA0KTE5HIDwtIGNpcmN1bGFyKExORyRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTkcNCg0KTExOIDwtIGNpcmN1bGFyKExMTiRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTE4NCkxMTCA8LSBjaXJjdWxhcihMTEwkcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTExMDQpMTE0gPC0gY2lyY3VsYXIoTExNJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xMTQ0KTExIIDwtIGNpcmN1bGFyKExMSCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTEgNCkxMRyA8LSBjaXJjdWxhcihMTEckcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTExHDQoNCkxNTiA8LSBjaXJjdWxhcihMTU4kcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE1ODQpMTUwgPC0gY2lyY3VsYXIoTE1MJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xNTA0KTE1NIDwtIGNpcmN1bGFyKExNTSRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMTU0NCkxNSCA8LSBjaXJjdWxhcihMTUgkcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTE1IDQpMTUcgPC0gY2lyY3VsYXIoTE1HJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xNRw0KDQpMSE4gPC0gY2lyY3VsYXIoTEhOJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xITg0KTEhMIDwtIGNpcmN1bGFyKExITCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMSEwNCkxITSA8LSBjaXJjdWxhcihMSE0kcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEhNDQpMSEggPC0gY2lyY3VsYXIoTEhIJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xISA0KTEhHIDwtIGNpcmN1bGFyKExIRyRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMSEcNCg0KTEVOIDwtIGNpcmN1bGFyKExFTiRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMRU4NCkxFTCA8LSBjaXJjdWxhcihMRUwkcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEVMDQpMRU0gPC0gY2lyY3VsYXIoTEVNJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0xFTQ0KTEVIIDwtIGNpcmN1bGFyKExFSCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNMRUgNCkxFRyA8LSBjaXJjdWxhcihMRUckcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjTEVHDQoNCiMjIyMjIyMjIyMjIyAgTGlnaHRzIE9mZg0KDQpETk4gPC0gY2lyY3VsYXIoRE5OJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0ROTg0KRE5MIDwtIGNpcmN1bGFyKEROTCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETkwNCkROTSA8LSBjaXJjdWxhcihETk0kcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE5NDQpETkggPC0gY2lyY3VsYXIoRE5IJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0ROSA0KRE5HIDwtIGNpcmN1bGFyKERORyRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETkcNCg0KRExOIDwtIGNpcmN1bGFyKERMTiRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETE4NCkRMTCA8LSBjaXJjdWxhcihETEwkcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRExMDQpETE0gPC0gY2lyY3VsYXIoRExNJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RMTQ0KRExIIDwtIGNpcmN1bGFyKERMSCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETEgNCkRMRyA8LSBjaXJjdWxhcihETEckcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRExHDQoNCkRNTiA8LSBjaXJjdWxhcihETU4kcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE1ODQpETUwgPC0gY2lyY3VsYXIoRE1MJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RNTA0KRE1NIDwtIGNpcmN1bGFyKERNTSRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNETU0NCkRNSCA8LSBjaXJjdWxhcihETUgkcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjRE1IDQpETUcgPC0gY2lyY3VsYXIoRE1HJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RNRw0KDQpESE4gPC0gY2lyY3VsYXIoREhOJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RITg0KREhMIDwtIGNpcmN1bGFyKERITCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNESEwNCkRITSA8LSBjaXJjdWxhcihESE0kcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREhNDQpESEggPC0gY2lyY3VsYXIoREhIJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RISA0KREhHIDwtIGNpcmN1bGFyKERIRyRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNESEcNCg0KREVOIDwtIGNpcmN1bGFyKERFTiRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNERU4NCkRFTCA8LSBjaXJjdWxhcihERUwkcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREVMDQpERU0gPC0gY2lyY3VsYXIoREVNJHBpdGNoLnBlcmZlY3QsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikgI0RFTQ0KREVIIDwtIGNpcmN1bGFyKERFSCRwaXRjaC5wZXJmZWN0LCB1bml0cz0iZGVncmVlcyIsIHRlbXBsYXRlPSJnZW9ncmFwaGljcyIpICNERUgNCkRFRyA8LSBjaXJjdWxhcihERUckcGl0Y2gucGVyZmVjdCwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSAjREVHDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKExOTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTE5OLm1lYW4gPC0gbWVhbihMTk4sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5OLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpICAjIyMgbGFyZ2VyIHN0YWNrIG51bWJlciA9IG1vcmUgem9vbWVkIG91dA0KYXJyb3dzLmNpcmN1bGFyKExOTi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTE5MLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTkwubWVhbiA8LSBtZWFuKExOTCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTkwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTkwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExOTSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTE5NLm1lYW4gPC0gbWVhbihMTk0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE5NLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE5NLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTkgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxOSC5tZWFuIDwtIG1lYW4oTE5ILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExOSCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExOSC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTE5HLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTkcubWVhbiA8LSBtZWFuKExORywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTkcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTkcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT24gTG93IEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihMTE4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxMTi5tZWFuIDwtIG1lYW4oTExOLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExMTiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExMTi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTExMLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTEwubWVhbiA8LSBtZWFuKExMTCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTEwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTEwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExMTSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTExNLm1lYW4gPC0gbWVhbihMTE0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTExNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTExNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTEgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxMSC5tZWFuIDwtIG1lYW4oTExILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExMSCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExMSC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTExHLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTEcubWVhbiA8LSBtZWFuKExMRywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTEcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTEcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPbiBNZWRpdW0gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKExNTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTE1OLm1lYW4gPC0gbWVhbihMTU4sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE1OLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE1OLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTUwsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxNTC5tZWFuIDwtIG1lYW4oTE1MLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExNTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExNTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTE1NLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMTU0ubWVhbiA8LSBtZWFuKExNTSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMTU0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMTU0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExNSCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTE1ILm1lYW4gPC0gbWVhbihMTUgsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTE1ILCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTE1ILm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMTUcsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxNRy5tZWFuIDwtIG1lYW4oTE1HLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExNRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExNRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9uIEhpZ2ggRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKExITiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTEhOLm1lYW4gPC0gbWVhbihMSE4sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEhOLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEhOLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMSEwsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxITC5tZWFuIDwtIG1lYW4oTEhMLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExITCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExITC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEhNLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMSE0ubWVhbiA8LSBtZWFuKExITSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMSE0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMSE0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExISCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTEhILm1lYW4gPC0gbWVhbihMSEgsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEhILCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEhILm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMSEcsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxIRy5tZWFuIDwtIG1lYW4oTEhHLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExIRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExIRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT24gRXh0cmVtZSBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oTEVOLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMRU4ubWVhbiA8LSBtZWFuKExFTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMRU4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMRU4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExFTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTEVMLm1lYW4gPC0gbWVhbihMRUwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEVMLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEVMLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihMRU0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkxFTS5tZWFuIDwtIG1lYW4oTEVNLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKExFTSwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKExFTS5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oTEVILCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpMRUgubWVhbiA8LSBtZWFuKExFSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihMRUgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihMRUgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKExFRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KTEVHLm1lYW4gPC0gbWVhbihMRUcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoTEVHLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoTEVHLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9mZiBObyBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oRE5OLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETk4ubWVhbiA8LSBtZWFuKEROTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETk4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikgICMjIyBsYXJnZXIgc3RhY2sgbnVtYmVyID0gbW9yZSB6b29tZWQgb3V0DQphcnJvd3MuY2lyY3VsYXIoRE5OLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETkwsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkROTC5tZWFuIDwtIG1lYW4oRE5MLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKEROTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKEROTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE5NLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETk0ubWVhbiA8LSBtZWFuKEROTSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETk0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETk0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKEROSCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRE5ILm1lYW4gPC0gbWVhbihETkgsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE5ILCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE5ILm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETkcsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRORy5tZWFuIDwtIG1lYW4oRE5HLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERORywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERORy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPZmYgTG93IEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihETE4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRMTi5tZWFuIDwtIG1lYW4oRExOLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERMTiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERMTi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRExMLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETEwubWVhbiA8LSBtZWFuKERMTCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETEwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETEwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERMTSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRExNLm1lYW4gPC0gbWVhbihETE0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRExNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRExNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETEgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRMSC5tZWFuIDwtIG1lYW4oRExILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERMSCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERMSC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRExHLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETEcubWVhbiA8LSBtZWFuKERMRywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETEcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETEcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICMjIExpZ2h0cyBPbiBNZWRpdW0gRmxvdw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQptZWFuKERNTiwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRE1OLm1lYW4gPC0gbWVhbihETU4sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE1OLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE1OLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETUwsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRNTC5tZWFuIDwtIG1lYW4oRE1MLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERNTCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERNTC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oRE1NLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpETU0ubWVhbiA8LSBtZWFuKERNTSwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihETU0sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihETU0ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERNSCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KRE1ILm1lYW4gPC0gbWVhbihETUgsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoRE1ILCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoRE1ILm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihETUcsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRNRy5tZWFuIDwtIG1lYW4oRE1HLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERNRywgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERNRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgIyMgTGlnaHRzIE9mZiBIaWdoIEZsb3cNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KbWVhbihESE4sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRITi5tZWFuIDwtIG1lYW4oREhOLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERITiwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERITi5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREhMLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpESEwubWVhbiA8LSBtZWFuKERITCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihESEwsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihESEwubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERITSwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KREhNLm1lYW4gPC0gbWVhbihESE0sIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREhNLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREhNLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihESEgsIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRISC5tZWFuIDwtIG1lYW4oREhILCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERISCwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERISC5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREhHLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpESEcubWVhbiA8LSBtZWFuKERIRywgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihESEcsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihESEcubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAjIyBMaWdodHMgT24gRXh0cmVtZSBGbG93DQoNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCm1lYW4oREVOLCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpERU4ubWVhbiA8LSBtZWFuKERFTiwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihERU4sIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihERU4ubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERFTCwgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KREVMLm1lYW4gPC0gbWVhbihERUwsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREVMLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpDQphcnJvd3MuY2lyY3VsYXIoREVMLm1lYW4pICNhZGQgbWVhbiB0byBwbG90DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KbWVhbihERU0sIG5hLnJtID0gVFJVRSkgI3JlbW92ZSBOQXMgZnJvbSBkYXRhc2V0LCB0aGVuIGZpbmQgbWVhbiANCkRFTS5tZWFuIDwtIG1lYW4oREVNLCBuYS5ybSA9IFRSVUUpICNhc3NpZ25zIHRvIHRoZSAnTE5OLm1lYW4nIG9iamVjdA0KDQpwbG90LmNpcmN1bGFyKERFTSwgc3RhY2sgPSBULCBwY2ggPSAyMCwgc2VwID0gMC4wOCwgc2hyaW5rID0gMS42KQ0KYXJyb3dzLmNpcmN1bGFyKERFTS5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCm1lYW4oREVILCBuYS5ybSA9IFRSVUUpICNyZW1vdmUgTkFzIGZyb20gZGF0YXNldCwgdGhlbiBmaW5kIG1lYW4gDQpERUgubWVhbiA8LSBtZWFuKERFSCwgbmEucm0gPSBUUlVFKSAjYXNzaWducyB0byB0aGUgJ0xOTi5tZWFuJyBvYmplY3QNCg0KcGxvdC5jaXJjdWxhcihERUgsIHN0YWNrID0gVCwgcGNoID0gMjAsIHNlcCA9IDAuMDgsIHNocmluayA9IDEuNikNCmFycm93cy5jaXJjdWxhcihERUgubWVhbikgI2FkZCBtZWFuIHRvIHBsb3QNCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KDQptZWFuKERFRywgbmEucm0gPSBUUlVFKSAjcmVtb3ZlIE5BcyBmcm9tIGRhdGFzZXQsIHRoZW4gZmluZCBtZWFuIA0KREVHLm1lYW4gPC0gbWVhbihERUcsIG5hLnJtID0gVFJVRSkgI2Fzc2lnbnMgdG8gdGhlICdMTk4ubWVhbicgb2JqZWN0DQoNCnBsb3QuY2lyY3VsYXIoREVHLCBzdGFjayA9IFQsIHBjaCA9IDIwLCBzZXAgPSAwLjA4LCBzaHJpbmsgPSAxLjYpICAjIyMgbGFyZ2VyIHN0YWNrIG51bWJlciA9IG1vcmUgem9vbWVkIG91dA0KYXJyb3dzLmNpcmN1bGFyKERFRy5tZWFuKSAjYWRkIG1lYW4gdG8gcGxvdA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KYGBgDQoNCmBgYHtyfQ0Kc3RyKENDLlRvdGFsRGF0YSkNCg0KbGV2ZWxzKENDLlRvdGFsRGF0YSREX1YpDQpgYGANCg0KVGVzdHMgYWdhaW5zdCBlYWNoIG90aGVyDQoNCmBgYHtyfSAgIA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEV4YW1wbGUgb2YgdGVzdGluZyBtZWFucyBvZiBncm91cHMgYWdhaW5zdCBlYWNoIG90aGVyDQojIEFudCBvcmllbnRhdGlvbiBmcm9tIER1ZWxsaSBhbmQgV2VobmVyICgxOTczKSANCiMgRXhhbXBsZSB1c2VkIGluIEJhdHNjaGVsZXQgKDE5ODEpIA0KDQoNCmRhdGExIDwtIGxpc3QoZXhwID0gY2lyY3VsYXIoTExMX2NhbGN1bGF0ZSRhbmdsZSwgdW5pdHM9ImRlZ3JlZXMiLCB0ZW1wbGF0ZT0iZ2VvZ3JhcGhpY3MiKSwgY29udHJvbCA9IGNpcmN1bGFyKExOTl9jYWxjdWxhdGUkYW5nbGUsIHVuaXRzPSJkZWdyZWVzIiwgdGVtcGxhdGU9Imdlb2dyYXBoaWNzIikpDQogICAgICAgICAgIA0Kd2F0c29uLndpbGxpYW1zLnRlc3QoZGF0YTEpDQoNCg0KIyMgZ2l2ZXMgZXJyb3IgDQogICMjV2FybmluZyBpbiB3YXRzb24ud2lsbGlhbXMudGVzdC5kZWZhdWx0KHgsIGdyb3VwKSA6DQogICMjQ29uY2VudHJhdGlvbiBwYXJhbWV0ZXJzICgwLjMyOCwgMC4yMzEpIG5vdCBlcXVhbCBiZXR3ZWVuIGdyb3Vwcy4gVGhlIHRlc3QgbWlnaHQgbm90IGJlIGFwcGxpY2FibGUNCiMjV2FybmluZyBpbiB3YXRzb24ud2lsbGlhbXMudGVzdC5kZWZhdWx0KHgsIGdyb3VwKSA6DQogICMjR2xvYmFsIGNvbmNlbnRyYXRpb24gcGFyYW1ldGVyOiAwLjMxNCA8IDIuIFRoZSB0ZXN0IGlzIHByb2JhYmx5IG5vdCBhcHBsaWNhYmxlDQoNCiAgICAjIyBzdWdnZXN0cyB1c2luZyBXaGVlbGVyLVdhdHNvbiB0ZXN0IGluc3RlYWQNCg0Kd2F0c29uLndoZWVsZXIudGVzdChkYXRhMSkNCg0KIyMgZ2l2ZXMgd2FybmluZyBvZiA6DQojIyBXYXJuaW5nIGluIHdhdHNvbi53aGVlbGVyLnRlc3QuZGVmYXVsdCh4LCBncm91cCkgOg0KICAjI1RoZXJlIGFyZSA3NTg4NCB0aWVzIGluIHRoZSBkYXRhLg0KICAjI1RpZXMgd2lsbCBiZSBicm9rZW4gYXBwYXJ0IHJhbmRvbWx5IGFuZCBtYXkgaW5mbHVlbmNlIHRoZSByZXN1bHQuDQogICMjUmUtcnVuIHRoZSB0ZXN0IHNldmVyYWwgdGltZXMgdG8gY2hlY2sgdGhlIGluZmx1ZW5jZSBvZiB0aWVzLg0KDQogICAgICAgICAgIyMgYWZ0ZXIgcnVubmluZyA0IHRpbWVzOiBXID0gKDc5Mi42NSwgLjc4LCAuOCwgLjcpDQogICAgICAgICAgIyMgYWxsIGRmJ3MgPSAyDQogICAgICAgICAgIyMgYWxsIHAtdmFsdWVzID0gMi4yDQoNCg0KDQpgYGANCg0KU2F2aW5nIERhdGEuZnJhbWVzIGFzIGNzdiBmaWxlcw0KYGBge3J9DQp3cml0ZS5jc3YoYWdnLmRhdGEsIGZpbGUgPSAifi9Qb3N0LWRvYy9EYXRhL2FnZy5kYXRhLlNlcC41LjIwMjIuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpDQoNCndyaXRlLmNzdihDQy5Ub3RhbERhdGEsIGZpbGUgPSAifi9Qb3N0LWRvYy9EYXRhL0NDLlRvdGFsRGF0YS5TZXAuNS4yMDIyLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0KDQp3cml0ZS5jc3YoZGF0YSwgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvZGF0YS5TZXAuNS4yMDIyLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0KDQojIyMjIERhcmsgY29uZGl0aW9ucyBzYXZlIGZpbGVzDQoNCndyaXRlLmNzdihERU4sIGZpbGUgPSAifi9Qb3N0LWRvYy9EYXRhL0NvbmRpdGlvbnMgTGV2ZWwgRGF0YS9ERU4uY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpDQp3cml0ZS5jc3YoRExOLCBmaWxlID0gIn4vUG9zdC1kb2MvRGF0YS9Db25kaXRpb25zIExldmVsIERhdGEvRExOLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0Kd3JpdGUuY3N2KEROSCwgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvQ29uZGl0aW9ucyBMZXZlbCBEYXRhL0ROSC5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkNCndyaXRlLmNzdihETk0sIGZpbGUgPSAifi9Qb3N0LWRvYy9EYXRhL0NvbmRpdGlvbnMgTGV2ZWwgRGF0YS9ETk0uY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpDQp3cml0ZS5jc3YoRE5OLCBmaWxlID0gIn4vUG9zdC1kb2MvRGF0YS9Db25kaXRpb25zIExldmVsIERhdGEvRE5OLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0KDQojIyMjIExpZ2h0IGNvbmRpdGlvbnMgc2F2ZSBmaWxlcw0KDQp3cml0ZS5jc3YoTE5OLCBmaWxlID0gIn4vUG9zdC1kb2MvRGF0YS9Db25kaXRpb25zIExldmVsIERhdGEvTE5OLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0Kd3JpdGUuY3N2KExOTCwgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvQ29uZGl0aW9ucyBMZXZlbCBEYXRhL0xOTC5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkNCndyaXRlLmNzdihMTk0sIGZpbGUgPSAifi9Qb3N0LWRvYy9EYXRhL0NvbmRpdGlvbnMgTGV2ZWwgRGF0YS9MTk0uY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpDQp3cml0ZS5jc3YoTE5ILCBmaWxlID0gIn4vUG9zdC1kb2MvRGF0YS9Db25kaXRpb25zIExldmVsIERhdGEvTE5ILmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0Kd3JpdGUuY3N2KExORywgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvQ29uZGl0aW9ucyBMZXZlbCBEYXRhL0xORy5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkNCg0Kd3JpdGUuY3N2KExMTiwgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvQ29uZGl0aW9ucyBMZXZlbCBEYXRhL0xMTi5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkNCndyaXRlLmNzdihMTEwsIGZpbGUgPSAifi9Qb3N0LWRvYy9EYXRhL0NvbmRpdGlvbnMgTGV2ZWwgRGF0YS9MTEwuY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpDQp3cml0ZS5jc3YoTExNLCBmaWxlID0gIn4vUG9zdC1kb2MvRGF0YS9Db25kaXRpb25zIExldmVsIERhdGEvTExNLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0Kd3JpdGUuY3N2KExMRywgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvQ29uZGl0aW9ucyBMZXZlbCBEYXRhL0xMRy5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkNCg0KDQp3cml0ZS5jc3YoTE1OLCBmaWxlID0gIn4vUG9zdC1kb2MvRGF0YS9Db25kaXRpb25zIExldmVsIERhdGEvTE1OLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0Kd3JpdGUuY3N2KExNRywgZmlsZSA9ICJ+L1Bvc3QtZG9jL0RhdGEvQ29uZGl0aW9ucyBMZXZlbCBEYXRhL0xNRy5jc3YiLCByb3cubmFtZXMgPSBGQUxTRSkNCg0KDQp3cml0ZS5jc3YoTEhOLCBmaWxlID0gIn4vUG9zdC1kb2MvRGF0YS9Db25kaXRpb25zIExldmVsIERhdGEvTEhOLmNzdiIsIHJvdy5uYW1lcyA9IEZBTFNFKQ0KDQoNCndyaXRlLmNzdihMRU4sIGZpbGUgPSAifi9Qb3N0LWRvYy9EYXRhL0NvbmRpdGlvbnMgTGV2ZWwgRGF0YS9MRU4uY3N2Iiwgcm93Lm5hbWVzID0gRkFMU0UpDQoNCg0KYGBgDQoNCmBgYHtyfQ0KDQoNCg0KDQoNCg0KYGBgDQoNCg0KDQoNCg0KDQo=